리눅스에서 execv 함수관련
글쓴이: black809 / 작성시간: 일, 2017/05/14 - 8:13오후
안녕하세요 라즈베리파이에서 상황에 따라서 어떤 프로그램들을 실행시키는 코드를 작성하려고 하는데
window에서 shellexecute역할을 하는게 linux에서는 execv라고 들었습니다.
그래서 일단 간단하게 작동하는지 코드를 작성해봤는데 gcc -o test1 test1.c 이런식으로 해서 실행시켜봤는데
아무것도 안뜨더라구요 잘못된 부분이 있는지 또는 다른 좋은 방법이 있는지 아시는분 설명부탁드립니다.
#include <stdio.h> #include <unistd.h> #include <sys/types.h> int foo(char *adr[]) { pid_t pid; pid=fork(); if (pid==0) { if (execv("/pi/user/a",adr)<0) //a라는 그림파일을 실행 return -1; else return 1; } else if(pid>0) return 2; else return 0; } int main(int argc,char *argv[]) { if (foo(argv)<=0) perror("foo"); return 0; }
Forums:
ShellExecute()와는 다르게 exec()
ShellExecute()와는 다르게 exec() 계열 함수들은 실행 파일만 실행시킬 수 있고, fork() 호출에서 보시다시피 더 낮은 레벨에서 다른 방식으로 작동합니다. exec() 인자에 실행 파일이 아닌 무언가를 주면 그 형식과 연결된 프로그램이 실행되는 게 아니라 그냥 작동을 거부하죠.
https://linux.die.net/man/1/xdg-open
감사합니다 !
정말 감사합니다 링크걸어주신 함수로 그림같은 파일을 열수있다는 말씀이신거죠
댓글 달기