execl("/bin/ps", "ps", "-ax", 0) 코드에서 왜 ps가 중복될까요??

고양이를부탁해의 이미지

안녕하세요 KLDP 여러분들!!

exec 계열 함수들을 사용할때 제목처럼 사용을 하던데요

execlp("ps", "ps", "-ax", 0);
execl("/bin/ps", "ps", "-ax", 0);

그런데 왜 ps 부분이 중복이 되는지.....

아 그리고 다음처럼 exec함수를 호출해도 실행이 되던데 ..

execlp("ps", "", "-ax", 0);

이건 무슨 조화인지...하하;;

사용을 하면서도 이해가 계속 안가서 질문드려요

좋은 답변 감사합니다!! :)

7339989b62a014c4ce6e31b3540bc7b5f06455024f22753f6235c935e8e5의 이미지

http://kldp.org/node/1548

검색은 해보셨슴까?

고양이를부탁해의 이미지

검색에 좀 더 공을 들였어야 하는데..

답변 감사드립니다!!

첫 번째 ps가 실행할 프로그램의 경로명을 포함한 이름이라면

굳이 두 번째에 또 ps가 들어갈 필요가 있을까 싶어서요

링크하신 페이지에서는

main(int argc , char *argv[])

에서 argv[]들을 찍어보면 argv[0]에 파일 이름이 들어가는 것처럼
제일 첫번째 인자로 파일 이름을 넣어주는 것 같습니다..
그럼....^^;;

이라고 언급이 되어있긴 한데 인자로 파일명을 넣어준다는게 쉽게 이해가 안가네요

execlp("ps", "", "-ax", 0); 이렇게 코드를 넣고 실행해도 실행이 되더라구요.

먼가 이유가 있을 거 같은데

이 부분에 대해서 도움을 좀 받을 수 있을까요??
------------
힘들면 즐겁다.


------------
힘들면 즐겁다.

ihavnoth의 이미지

$ man 3 exec

이상의 정보를 원하시나요?

심심해서 찾아봤습니다.

ls /tmp/glibc-20080505/posix/exec*
execl.c  execle.c  execlp.c  execv.c  execve.c  execvp.c

// /tmp/glibc-20080505/posix/execlp.c
...
     30 int
     31 execlp (const char *file, const char *arg, ...)
-    32 {
|    33 #define INITIAL_ARGV_MAX 1024
...
|    67   int ret = execvp (file, (char *const *) argv);

// /tmp/glibc-20080505/posix/execvp.c
||   63       /* Don't search when it contains a slash.  */
||   64       __execve (file, argv, __environ);

// /tmp/glibc-20080505/posix/execve.c
     27 __execve (path, argv, envp)
     28      const char *path;
     43 weak_alias (__execve, execve)

// /usr/src/linux/arch/x86/kernel/syscall_table_32.S
     12         .long sys_unlink        /* 10 */
     13         .long sys_execve
     14         .long sys_chdir

// /usr/src/linux/arch/x86/kernel/process_32.c
    670 asmlinkage int sys_execve(struct pt_regs regs)
-   671 {
|   672         int error;

없음

고양이를부탁해의 이미지

어디 쥐구멍이라도 숨어야겠네요... -_-;;

그런데 글로 남기신 코드는 어떻게 찾으신건가요??

------------
힘들면 즐겁다.


------------
힘들면 즐겁다.

klutzy의 이미지

argv[0]은 일반적으로 사용할 일이 없긴 하지만, 특수한 경우에 사용하기도 합니다. 프로그램 도움말을 출력할 시점에 자기 프로그램 이름이 무엇인지 알아낸다든지요. 사실 argv[0]의 용도는 매뉴얼을 봐도 알기 힘들지 않을까요 :) 다음 글도 참고하세요.

http://ideathinking.com/blog-v2/?p=52

고양이를부탁해의 이미지

그렇네요 busybox의 경우에는 그 용도가 확실하네요

오 이렇게도 argv[0]를 쓰는군요

아 신기하네요 하하;;

------------
힘들면 즐겁다.


------------
힘들면 즐겁다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.