簡體   English   中英

Popen實施中的分段錯誤

[英]Segmentation fault in popen implementation

我已經編寫了用於實現popen()的C程序。 我在運行代碼時遇到分段錯誤。 我嘗試使用execl()而不是execv(),但是遇到了同樣的錯誤。 請幫忙

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <unistd.h>
#include <sys/wait.h>



#include <sys/syscall.h>
FILE *popen(const char *command,const char* mode)
{
        FILE *fp;
        int pipe_fd[2];
        pid_t pid;
                        /* Assume child is writing. */
        pipe(pipe_fd);

    if ((pid = vfork()) == 0) {     /* Child of vfork... */
            if (mode[0] == 'r') {
                    dup2(pipe_fd[1],1);
            }
            else if(mode[0] == 'w')
                    dup2(pipe_fd[0],0);
            close(pipe_fd[0]);
            close(pipe_fd[1]);



            execv(command,"");
            _exit(127);
    }
    if(mode[0] == 'r'){
            close(pipe_fd[1]);
            fp = fdopen(pipe_fd[0],mode);
    }
    else if(mode[0] == 'w'){
            close(pipe_fd[0]);
            fp = fdopen(pipe_fd[1],mode);
    }
    return fp;

}

int main(){
        File*fp;
        fp = popen("ls",'r');
}

編譯器應就此代碼警告您execv(command,""); ,execv不接受指向char的指針作為第二個參數,只需讀取man execv

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM