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

使用posix_spawn创建多进程程序有点疑惑。

    来源: 互联网  发布时间:2016-06-07

    本文导语:  我想使用posix_spawn或者posix_spawnp来创建一个子进程的例子,但是有点疑问。 创建总是成功的,但是,子进程的命令的输出总是看不到。不知道为什么。 代码如下: #include  #include  #include  #include  extern char **envi...

我想使用posix_spawn或者posix_spawnp来创建一个子进程的例子,但是有点疑问。
创建总是成功的,但是,子进程的命令的输出总是看不到。不知道为什么。
代码如下:
#include 

#include 

#include 

#include 



extern char **environ;

int main(int argc, char * argv[])

{

posix_spawnattr_t attr;

posix_spawn_file_actions_t fact;

pid_t pid;

char args[][32]={"ls",NULL};

posix_spawnattr_init(&attr);

posix_spawn_file_actions_init(&fact);

if(posix_spawnp(&pid,"ls",&fact,&attr,(char**)args,(char**)environ)==0)

{

printf("child pid is %d",getpid());

return 0;

}

perror("posix_spawn");

printf("pid=%dn",pid);

return 0;

}

|
是参数问题不假,但主要问题不是发生在posix_spawn这篇文章解释的范围。我也看了,也测试了,发现,是你构造的args有问题,具体修改的代码如下:

#include 
#include 
#include 
#include 
#include 
#include 

extern char **environ;
int main(int argc, char * argv[])
{
posix_spawnattr_t attr;
posix_spawn_file_actions_t fact;
pid_t pid;
char cmd[]="ls";
char opt[]="-l";
char *args[3];
args[0]=cmd;
args[1]=opt;
args[2]=NULL;
posix_spawnattr_init(&attr);
posix_spawn_file_actions_init(&fact);
posix_spawn(&pid,"/bin/ls",&fact,&attr,args,environ);
perror("posix_spawn");
printf("pid=%d,child pid = %dn",getpid(),pid);
int stat=0;
waitpid(pid,&stat,0);
printf("stat is %dn",stat);
return 0;
}

|
试试:
#include 
#include 
#include 
#include 

int main(int argc, char * argv[])
{
    pid_t pid;

    posix_spawnp(&pid, "ls", NULL, NULL, NULL, NULL);

    return 0;
}

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • 使用ps命令,如何使用系统命令根据进程名称获取进程和子进程的ID?除了ps,还有其它系统命令的办法吗?谢谢。
  • 怎么打开一个进程并得到这个进程内存使用的信息?
  • fork一个子进程后在打开一个文件,如何在子进程中使用这个打开的文件描述符号
  • linux进程(线程)运行过程中如何获取本进程当前的内存使用状况,统计信息?
  • 如何实现这样的API,可同时被不同的进程/线程使用,但是又不区分进程/线程?
  • 如何查看某个进程的cpu使用和内存使用情况????
  • 关于大于2G内存的使用.....按32位编译的进程怎么使用大于2G的内存?
  • 如何使用另外进程的socket
  • [急]linux对于c 如何获得一个进程及其子进程从开始到结束 它的最大CPU% MEM%使用率
  • 子进程用_exit退出,父进程为什么就不能让stdout使用缓存呢?
  • AIX系统中不使用lsof,还有没有其他命令可以知道端口是被那个进程使用
  • 进程间通信:pthread_cond使用在线程间,我要进程间条件同步(没有情缘关系的进程),采用什么方呢?也就是说我要在UNIX实现WIN32上命名Event的功能
  • 请问在 linux 下如何使用 execl() 调用另一个多进程的程序?
  • 计算进程的内存使用量应该使用/proc/self/statm哪几个量相加表示?
  • 怎么查一个特定进程使用的端口号啊
  • 大家好,我想问下有人用过"linux进程的内存使用解析"中推荐使用的"Ben Maurer写的perl脚本"查看内存么
  • 有人研究 或者 使用 实时进程 吗?请进来好吗?
  • 进程对串口读写时使用互斥机制吗?
  • 请问在UNIX上如何看一个进程的内存使用情况?
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!!
  • Python不使用print而直接输出二进制字符串
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • Office 2010 Module模式下使用VBA Addressof
  • c#中SAPI使用总结——SpVoice的使用方法
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • 使用了QWidget的程序,如何使用后台程序启动它?
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍


  • 站内导航:


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

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3