当前位置:  技术问答>linux和unix

C调用SHELL怎么获取这个SHELL的pid?

    来源: 互联网  发布时间:2017-04-17

    本文导语:  我先用fork创建了一个子进程,然后在子进程中调用一个shell(调用方法不限制)。这个shell跑起来后,这个shell的pid怎么在程序获得。我以前是子进程的pid就是这个pid了。结果发现不是。 #include  #include  #include  #includ...

我先用fork创建了一个子进程,然后在子进程中调用一个shell(调用方法不限制)。这个shell跑起来后,这个shell的pid怎么在程序获得。我以前是子进程的pid就是这个pid了。结果发现不是。
#include 
#include 
#include 
#include 

void child()
{
FILE *pf = NULL;
int size = 0;

char buf[100] =
{ 0 };
pf = popen("DEBUG=1 pppoe-start", "r");
size = fread(buf, 1, 512, pf);

printf("buf = %sn", buf);

return 0;
}

int main()
{
pid_t child_pid;
int status;
char prog[] = "DEBUG=1 pppoe-start";

printf("** Execuing program: ls -l /bin/gzip **nn");

child_pid = fork();

if (child_pid  0) 
{
printf("pid is %dn",nPid);
}
else
break;
}
}

void child()
{
    FILE *pf = NULL;
    int size = 0;
 
    char buf[512 + 1] = { 0 };
    signal(SIGCLD, Wait);
    pf = popen("DEBUG=1 pppoe-start", "r");
    size = fread(buf, 1, 512, pf);
 
    printf("buf = %sn", buf);
 
    return 0;
}

这样就可以得到 子子进程的pid,不过要等他跪了以后,另外buf大一点
另外的办法就是就是再开个管道,用ps 啥命令的把进程子子进程id找到,或者类似的
好像没有直接获取子进程的调用

|
1. 可以通过getpid获取当前进程的id

2. fork子进程后,execve启动的程序的id就是子进程的id

|
fork在父进程中的返回值就是子进程的pid,需要用到就直接保存就行了。


    
 
 

您可能感兴趣的文章:

  • shell脚本如何调用另外一个shell脚本的函数?
  • C调用shell时,能否给shell传递参数
  • 如何编写Shell,当SQL执行完毕后,继续调用Shell命令。
  • 请问 怎么样在C中调用一个 shell,得到shell中一个参数的值
  • 求助关于Java调用shell再传值给shell的问题
  • 用shell调用api接口能实现吗?100分就是你的了
  • 如何用shell调用jar包!
  • 想在C程序中调用Shell脚本,咋办???
  • 请问:C语言中system怎样调用shell,谢谢!急!!!!!
  • 如何在shell 中调用 外部程序
  • 求助!!shell调用问题
  • 如何在程序中调用SHELL Library驱动中的命令
  • shell脚本里的函数怎么调用??
  • shell程序调用问题(一点点难度)
  • shell 调用java程序出错
  • java调用shell中出现的问提
  • C调用SHELL命令执行结果
  • shell调用c显示输出的问题
  • system调用shell命令时的一个疑问
  • C语言调用shell脚本后,通过何种方法能获取脚本中变量的值
  • linux不用命令方式读文件获取网络流量,如何使用C函数调用获取网络流量信息?
  • 如何获取特权进程的系统调用序列?
  • [求助]如何获取一个程序所使用的系统调用和参数?
  • jsp页面获取服务器时间的简单调用示例
  • 关于popen调用ls获取文件名的问题
  • linux下如何获取cpu的利用率??或用什么系统调用?
  • java调用百度定位api服务获取地理位置示例
  • 关于用system去调用shell命令时获取的返回值的问题,急!!!!!
  • python使用ctypes模块调用windowsapi获取系统版本示例
  • 根据ip调用新浪api获取城市名并转成拼音
  • Linux中获取某个进程的系统调用以及参数(故障排查案例)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 在Python中使用SWIG调用C和C++程序
  • Linux添加系统调用时如何调用C语言库函数
  • sessionbean调用entitybean的时候还需要像Client一样远程调用对象吗??
  • system()调用 与 ioctl()调用
  • linux中为什么系统调用比普通函数调用更费时间?
  • 如何在LINUX下用一个普通文件调用一个自己编写的调用系统的文件
  • 可不可以用java调用其他语言的编译结果?(好象asp调用com那样)
  • 为什么我的BEAN 在WIN2000中调用没有问题,但在LINUX中调用有问题
  • 为什么守护进程调用调用getlogin会失败呢?
  • 用RMI进行远程对象调用的时候,可不可以实现多个调用远程对象的并发操作
  • 关于jsp调用javabean的问题!调用是成功了,但是有小问题!
  • ioctl中能不能调用generic_file_read呀?我一调用就不动了
  • LINUX下系统调用是不能中断的,要怎么改造成可以中断系统调用?
  • 请问用javaScript或vbScript可否调用页面上Applet的public函数?如何调用?
  • 请问在jsp中调用外部的类,与jsp调用javabean有何区别??
  • 调用数学函数,需要调用哪个函数库?
  • 调用system(“命令”)和函数调用之间有什么不同?效率?
  • 请问如何在Java中调用一个VB所写的DLL?如何调用这个Dll的方法?如何取得和设置这个Dll的属性值?谢谢!
  • 脚本1调用脚本2,脚本2必须输入回车,如何在调用过程中自动输入回车
  • 请问linux中的系统调用号是如何跟系统调用表对应起来的
  • 我的APPLET在Jbuilder5中,可以调用EJB对象,但是移植到网页上却不能调用EJB对象!是何缘故,值得研究!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,