쓰레드를 돌릴때... 각각의 쓰레드 않에 외부의 프로그램을
실행시켜도( system() 혹은 exec...() 같은 함수들로) 역시 쓰레드가
되나요?
혹시 그렇게 되지 않는다면 다른방법이 있는지...
system()은 'fork() -> exec() -> sh 수행'의 단계를 거치기 때문에 스레드라고 볼 수 없습니다.
exec()경우도 마찬가지이며, fork()단계를 거치지 않고 바로 수행된다면 현재의 process가 exec()로 실행된 process로 대체되어 버립니다.
s(˘∼˘*)z,·´″"`°³о$ √(´∀`√)... (˘ヘ˘ㆀ)a
기본적으로 system() 은 프로세스 대상이기 때문에, 어떤 쓰레드에서 system() 명령을 사용하더라도 새로운 "프로세스"가 생성됩니다. 참고로, 쓰레드를 이용하여 새로운 명령어를 수행시킬 수 있는 방법은 없습니다.
그렇지만, 제 생각엔 프로세스가 생성되어 쉘 작업을 수행해도 아무런 문제가 없어 보이는데요? 굳이 쓰레드가 생성되어야 할 이유가 있나요?
질문드립니다..^^ 관련 내용들이 많은것 같은데 저 같은 초보들을 위해서 간단하게 리플해주세요...^^ 그럼 쓰레드는 언제 사용해야 되는건가요.? 여러 프로세스가 데이타를 공유하고 싶을때 인가요? :D
꿈은 이루어진다.
윗분중에 '새로운 프로세스가 생성되니 상관이 없다'라고 말씁하셨는데요
그럼 그렇게 쉘로 새로운 프로세스가 생성되면 그대로 멀티테스킹 이 그대로
적용되는건가요? 그러니까 두개의 쓰레드로 나눈 상태에서 각각에 새로운
프로세스가 생성된다면 그 프로그램이 실행되는 도중에 다른 것도 같이
멀티테스킹이 되는건가요
텍스트 포맷에 대한 자세한 정보
<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]
system()은 'fork() -> exec() -> sh
system()은 'fork() -> exec() -> sh 수행'의 단계를 거치기 때문에
스레드라고 볼 수 없습니다.
exec()경우도 마찬가지이며, fork()단계를 거치지 않고 바로 수행된다면
현재의 process가 exec()로 실행된 process로 대체되어 버립니다.
s(˘∼˘*)z,·´″"`°³о$ √(´∀`√)... (˘ヘ˘ㆀ)a
기본적으로 system() 은 프로세스 대상이기 때문에, 어떤 쓰레드에서
기본적으로 system() 은 프로세스 대상이기 때문에, 어떤 쓰레드에서 system() 명령을 사용하더라도 새로운 "프로세스"가 생성됩니다.
참고로, 쓰레드를 이용하여 새로운 명령어를 수행시킬 수 있는 방법은 없습니다.
그렇지만, 제 생각엔 프로세스가 생성되어 쉘 작업을 수행해도 아무런 문제가 없어 보이는데요? 굳이 쓰레드가 생성되어야 할 이유가 있나요?
질문
질문드립니다..^^
관련 내용들이 많은것 같은데 저 같은 초보들을 위해서 간단하게 리플해주세요...^^
그럼 쓰레드는 언제 사용해야 되는건가요.?
여러 프로세스가 데이타를 공유하고 싶을때 인가요? :D
꿈은 이루어진다.
그렇다면 다시 질문 올립니다.
윗분중에 '새로운 프로세스가 생성되니 상관이 없다'라고 말씁하셨는데요
그럼 그렇게 쉘로 새로운 프로세스가 생성되면 그대로 멀티테스킹 이 그대로
적용되는건가요? 그러니까 두개의 쓰레드로 나눈 상태에서 각각에 새로운
프로세스가 생성된다면 그 프로그램이 실행되는 도중에 다른 것도 같이
멀티테스킹이 되는건가요
댓글 달기