-
[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