文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>模仿popen的pzpopen

模仿popen的pzpopen

时间:2009-07-07  来源:pz0513

pzpopen: 返回的是文件描述符  

#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>

int pzpopen(char *proc, char *mode) {
    int pipe_d[2];
    pid_t pid;
    
    if(pipe(pipe_d) != 0) {
        fprintf(stderr, "pipe failed!\n");
        return -1;
    }
    if(*mode == 'r' && *(mode + 1) == '\0'){
        pid = fork();
        switch(pid) {
        case -1:
            fprintf(stderr, "fork failed.\n");
            return -1;
        case 0:
            dup2(pipe_d[1], 1);
            close(pipe_d[1]);
            close(pipe_d[0]);
            execl(proc, proc, NULL);
            fprintf(stderr, "execl failed.\n");
            return -1;
        }
        close(pipe_d[1]);
        return pipe_d[0];
    }else if(*mode == 'w' && *(mode + 1) == '\0') {
        pid = fork();
        switch(pid) {
        case -1:
            fprintf(stderr, "fork failed.\n");
            return -1;
        case 0:
            dup2(pipe_d[0], 0);
            close(pipe_d[0]);
            close(pipe_d[1]);
            execl(proc, proc, NULL);
            fprintf(stderr, "execl failed.\n");
            return -1;
        }
        close(pipe_d[0]);
        return pipe_d[1];
    }
    fprintf(stderr, "Unknown mode %s!\n", mode);
    return -1;
}

   
相关阅读 更多 +
排行榜 更多 +
罗马战争与防御

罗马战争与防御

策略塔防 下载
3d坦克突击最新版

3d坦克突击最新版

飞行射击 下载
3d子弹先生射击模拟器安卓版

3d子弹先生射击模拟器安卓版

飞行射击 下载