APUE第2版406页说 每次调用popen时,应当记住所创建子进程的ID 请问,怎么得到这个子进程ID的? 有些人推荐用fork+execl,但是我要在这个管道里传输一些指令,所以就选择了popen
解决了一个以前没有解决的问题 我原来在这里问过一个问题,调用SHELL的时候,如何获得SHELL的返回值 上次没有人回答,现在我自己解决了。估计有好多人想知道答案,所以在这里公布一下 方法就是 FILE * popen( const char*, const char* )函数 管道函数 两个参数,第一个是要执行的SHELL,第二个是文件打开属性,一般用 " r " 就足够了 函数返回一个FILE 指针。然后可以用读取文件的方法读取返回值!!! 欲知...
在一线程A里执行play_fp = popen(t_cmd, "w");//t_cmd是一个外部程序B 然后在另外一线程C里执行fwrite(pause_cmd, sizeof(char), strlen(pause_cmd), play_fp);//pause_cmd=“q”; 问题是这样,如果在fwrite后面加fclose(play_fp ),外部程序B能接受到“q”,但是c线程的fclose之后的代码就不执行了 如果不加fclose(play_fp ),外部程序B就不能接受到Q,但是线程C fclose()之后的代码是能执行的 [ 本帖最后由 marco_hxj 于 200...
int status; fp = popen("xxxx", "r"); if(fp == NULL) { printf("popen failed errno=%d", errno); //如果popen是因为fork或者pipe调用失败的话,errno也会被fork/pipe设置 }else { while(fgets(line, sizeof(line), fp)) { //读取命令的标准输出,注意没有标准出错,如果需要的话,我想命令可以写成 xxx 2>&1 } status = pclose(fp); if(status == -1) { //pclose失败了,一般来说错误是ECHILD,这是...
要用c 寫管道 用人教我用 popen() ..... 可是如果我要 execv 的是 自己寫的 file....用 popen() 怎麼實現... popen("../bin/list -i"); 請問這句能實現嗎?
windows xp 系统 import os s = os.popen('dir c:\\') for i in s: print i 无任何输出。在另一台机器上就没问题。cmd中运行 dir c:\ 正常。
我用popen打开一个执行很长时间的命令,用管道来读取命令的返回结果,会不会有超时问题呢? char *ret=(char *)malloc(255);memset(ret,0,255); FILE *fp ; if ((fp = popen(rsh,"r"))==NULL) return ; while(fgets(ret,255,fp) != NULL) { strcat(m_strReport,ret); memset(ret,0,255); } (void)pclose(fp); free(ret); 注意:m_strReport是一个全局char *变量,rsh是执行的命令,这个命令需要点时间。上段代码的功能...
遇到个popen的问题 用popen打开了一个程序abc 如果abc不结束就不能从popen得到abc的输出 请问这怎么解决呢 [code] #!/usr/bin/env python import os a,b = os.popen2('/tmp/abc') print b.read() [/code] abc.c [code] int main() { while(1) { sleep(1); printf("yes\n"); } } [/code]