我试图创buildn = 10的subprocess,并使其执行和平的代码..然而,它创build了14个subprocess无差别的n。 这是为什么?
这是示例代码:
#include <stdlib.h> #include <stdio.h> int main() { printf("It worked! "); return 0; }
这是主要的程序:
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <errno.h> #include <unistd.h> #include <sys/wait.h> int main (int argc,char *argv[]) { int n = 10; pid_t pid; int status = 0; int fd2[2]; int i = 0; while (i < n) { /*create the pipe */ if (pipe(fd2) == -1) { fprintf(stderr,"Problem at pipe: %sn",strerror(errno)); exit(1); } /*create fork*/ pid = fork(); if (pid == -1) { fprintf(stderr,"Problem at fork: %sn",strerror(errno)); exit(1); } else if (pid == 0) /*in child*/ { close(fd2[0]); close(1); dup2(fd2[1],1); close(fd2[1]); execl("sample.bin","sample.bin",NULL); fprintf(stderr,"Problem at exec: %s",strerror(errno)); exit(1); } /* in parent */ close(fd2[1]); char line[255]; if (n = read(fd2[0],line,254)) { printf("%d The message is: %sn",i,line); } close(fd2[0]); wait(&status); i++; } return 0; }
WINAPI_FAMILY_PARTITION是做什么的?
SymInitialize失败,错误2147483661
在Windows / Cygwin的Netbeans中用libcurl编译代码的问题
在C / C ++中创build1个用零填充的1GB文件的最快方法是什么?
如何让特定的网站/ URL使用C#Windows应用程序
什么是从malloc()做的Windows和Linux本地操作系统/系统调用?
用户使用C#System.DirectoryServices在远程Windows服务器上进行pipe理
针对embedded式Linux的简单的C / C ++ FTP和SFTP客户端库推荐
如何在不连接kernel32.dll和ntdll.dll的情况下运行PE映像
我纠正了代码,现在输出是我所期望的。 当然,另外一个问题是我在读取相同的变量n时使用。
我从这个修改:
if (n = read(fd2[0],line); }
对此:
int m; while((m = read(fd2[0],254) > 0) { printf("%d The message is: %sn",line); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。