ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Linux] execl() and execv()
    LinuxProgramming 2023. 10. 18. 19:48

     

    execl("./a.out", "./a.out", "1", "abcde", (char*)0);

     

    char const* argv[] = {"./a.out", "0", "12345", (char*)0};
    
    execv("./a.out", argv);

    첫번째 인자인 ./a.out, 즉 실행할 파일 경로는 실행할 파일이 받는 const char** argv 로 들어가지 않는다.

     

    그래서 argv는 두번째 인자부터 시작이다
     
    맨 첫번째인자는 파일경로를 알려주는 것뿐이다
    진짜로 전달되는 인자는 파일 경로 뒤부터다.
     
    또한 char** argv로 받을때는 string인자들만 받기 때문에 정수를 전달할때도 string으로 전달이 된다.

    그래서 해당 프로그램 안에서 정수로 바꿔줘야하는데 이때 atoi 함수를 사용할 줄 알아야한다

    atoi 함수 개많이 쓰임 ㅇㅇ

     

     

    그리고 항상 명심해야할게 맨 끝으로는 (char*)0 == NULL 값이 들어가야한다.

    해당 프로그램이 인자가 몇 개 들어왔는지 알아야하는데 인자 더 이상 없음 을 알려주는게 (char*)0 이기 때문이다.

     


    참고로 만약 내가 다른 프로세스에서 현재 실행시키고 싶은 실행파일(.exe)를 돌리고 싶으면 무조건 fork() 후에 exec()이다.

    과제로 myshell회의가 들어 확실하게 정리하고 간다.

    'LinuxProgramming' 카테고리의 다른 글

    [Linux] 과제3 : myshell  (1) 2023.10.22
    [Linux] opendir() and readdir()  (0) 2023.10.22
    [Linux] wait() and waitpid()  (2) 2023.10.17
    [Linux] signal()  (1) 2023.10.16
    [Linux] pipe()  (0) 2023.10.16