Difference between revisions of "포크"

Jump to navigation Jump to search
4,361 bytes added ,  20:49, 10 September 2018
no edit summary
(Created page with "'''포크'''는 아래와 같은 뜻을 가진다. '''포크'''(fork): * '''포크'''는 식기 도구 중의 하나이다. * '''쇠스랑'''(피치포크)은...")
 
 
Line 1: Line 1:
'''포크'''는 아래와 같은 뜻을 가진다.
__toc__


'''포크'''([[fork]]):
= 어떠한 것에서 분기되는 것 =
* '''[[포크]]'''는 식기 도구 중의 하나이다.
어떠한 내용이 있을 때 그 내용을 바탕으로 다른 내용을 만들어 [[분기]]하는 것을 말한다. 이 경우에 [[라이선스]] 등만 지켜지면 포크하는데 문제는 '''없다.''' 오픈 라이선스 같은 자료의 이용을 허용하는 형태이기에 가능한 것. 게다가 기존 라이센스와 호환된다면 대체 [[라이선스]]를 사용해도 된다! 또한, 이렇기 때문에 [[오픈 소스]] 프로젝트는 fork되어서 다양하게 분화하는 것이 가능하다. 예를 들어서, 커뮤니티에서 특화된 기능이 필요한 경우 기존 프로젝트를 포크하여 필요한 부분을 수정하는 것이 가능하다. 혹은 기존 프로젝트가 진행과정이 부진하거나 문제를 일으켰을 때도 이에 대한 반발로 새로운 프로젝트를 꾸리는 경우에도 포크를 사용한다. [[오라클(기업)|오라클]]의 정책에 반발하여 [[오픈오피스]]에서 [[리브레오피스]]로 갈라져 나오거나, [[하트블리드]] 사태 이후에 [[OpenBSD]] 커뮤니티에서 OpenSSL을 좀 더 보안성이 높은 구조와 가이드라인으로 바꾸는 LibreSSL이 갈라져 나오기도 했던 것이 그 예이다. 이렇게 포크가 가능한 구조는 오픈소스 커뮤니티의 다양성의 원동력이기도 하지만 반대로 파편화 문제를 일으키는 원인이기도 하다.
* '''[[쇠스랑]]'''(피치포크)은 농업 연장이다.
* '''[[이지창]]'''(밀리터리 포크)은 중세 무기이다.
* '''[[포크 (체스)|포크]]'''는 [[체스]]의 [[전술]]의 하나이다.
* 전산학에서 '''[[포크 (시스템 호출)|포크]]'''는 운영 체제가 프로세스를 복제하는 활동 또는 그를 지시하는 명령어나 함수를 말한다.
* '''[[포크볼]]'''는 야구의 [[구질]] 중 하나이다.
* '''[[자전거 포크|포크]]'''는 [[자전거]] 앞 바퀴를 지탱해서 [[자전거 뼈대|뼈대]]와 연결하는 [[자전거 부품|부품]]이다.
* '''[[포크 (소프트웨어 개발)]]'''([[Project fork]])는 소프트웨어나 웹사이트가 동일본을 기반으로 다른 버전으로 분기해 나가는 것을 말한다.(예: [[오픈오피스]]에서 포크한 [[리브레오피스]])


'''포크'''([[folk]]):
중국어로는, 소프트웨어에서 쓰이는 포크를 가리킬 때는, 포크(Fork)와 발음이 비슷한 복각(复刻/fu ke)으로 표기한다.[* [[https://zh.wikipedia.org/wiki/%E5%A4%8D%E5%88%BB_(%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B)]] ] 복각판 할 때 그 복각이다.
* '''[[포크 록]]'''
* '''[[포크송]]'''은 미국에서 발생한 음악 장르이다.


'''포크'''([[Polk]]):
'''본 위키 [[나무위키]]와 [[오리위키]]가 [[리그베다 위키]]에서 [[파생]]하여 탄생하였다.'''[* [[리브레위키]]는 리그베다 위키 DB를 사용하지 않고 백지에서 시작하여서 포크에 해당하지 않는다.] 이외의 예로 [[오픈오피스]]에서 파생된 [[리브레오피스]][* 이 사례가 본 나무위키와 옆동네 [[리브레 위키]]의 설립 과정과 매우 많이 닮아 있다. 심지어 리브레 위키는 포크가 아님에도 압도적인 지지를 받아 이 명칭을 채택했을 정도로, 사실 [[위키백과/언어별#s-2|스페인어 위키백과]]의 사용자들이 새로 만든 [[엔시클로페디아 리브레 우니베르살 엔 에스파뇰]]과 닮았다. 다만 공식적으로 리브레오피스와의 연관성은 불명이다.], [[MySQL]]에서 파생된 [[MariaDB]], [[WebKit]]에서 파생된 [[블링크]], [[위키트래블]]에서 파생된 [[위키여행]] 등이 있다.
* '''[[제임스 K. 포크]]'''(James Knox Polk, 1795~1849)는 미국의 제11대 대통령이다.


'''포크'''([[Pork]]):
* '''[[돼지고기|포크]]'''(pork)는 [[돼지고기]]의 외래어(영어)다.


[[category:동음이의어]]
== 예시 ==
"원본 -> 포크" 순이며, abc 가나다 순이다.
 
* [[MySQL]] -> [[MariaDB]]
* b2/cafelog -> [[워드프레스]]
* [[Ethereum]] -> [[Ethereum Classic]]
* [[OpenSSL]] -> [[LibreSSL]]
* [[나무위키]] -> [[바다위키]]
* [[나무위키]] -> [[우만위키]]
* [[레드햇 엔터프라이즈 리눅스]] -> [[CentOS]]
* [[리그베다 위키]] -> [[나무위키]]
* [[리그베다 위키]] -> [[오리위키]][* 오리위키의 경우, 나무위키의 갱신사항도 가져와서 반영했다.]
* [[비트코인]] -> [[비트코인 캐시]]
* [[비트코인]] -> [[비트코인 골드]]
* [[오픈오피스]] -> [[리브레오피스]]
* [[WebKit]] 1.0 -> [[블링크]]
* [[위키트래블]] -> [[위키여행]]
 
 
 
= [[유닉스]]의 함수 Fork() =
{{{#!html
<!-- HTML generated using hilite.me --><div style="background: #ffffff; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;"><pre style="margin: 0; line-height: 125%"><span style="color: #333399; font-weight: bold">int</span> <span style="color: #0066BB; font-weight: bold">main</span>(<span style="color: #333399; font-weight: bold">void</span>)
{
<span style="color: #333399; font-weight: bold">int</span> pid;
pid<span style="color: #333333">=</span>fork();
<span style="color: #008800; font-weight: bold">if</span>(pid<span style="color: #333333">==</span><span style="color: #0000DD; font-weight: bold">0</span>)
ChildProcess();
<span style="color: #008800; font-weight: bold">else</span>
ParentProcess();
<span style="color: #008800; font-weight: bold">return</span> <span style="color: #0000DD; font-weight: bold">0</span>;
}
</pre></div>
}}}
 
[[프로세스]]의 생성을 위한 시스템 호출 함수중 하나로, 현재 수행중인 프로세스와 동일한 일을 수행하는 프로세스를 복제한다. [[쓰레드]]랑 다르게 전역 변수를 공유하지 않는다. 단, shared memory같은 경우로 프로세스 간에 변수 공유도 가능하다. 복제 대상을 부모 프로세스, 그 결과물을 자식 프로세스라고 한다. 이때 fork()함수의 반환값에서 부모와 자식을 구별할 수 있는데, 자식은 0을 반환받고 부모는 자식의 PID(프로세스 ID)를 반환받는다. 만약 -1이 반환 되었다면 fork() 함수가 실패한 경우다.
 
다른 명령을 수행하기 위해서 exec같은 추가적인 코드가 수행되곤 한다. 한 프로세스에서 무한히 생성하다간 시스템에 프로세스의 정보를 저장하는 공간이 바닥나 시스템에 장애를 일으키므로~~암세포~~ 대개 OS차원에서 수를 제한한다. 이걸 악용한 공격방법이 있는데 fork bomb이라 한다.
 
윈도우에는 이 fork 함수가 없다. 유닉스, 리눅스 시스템용 코드를 윈도우로 옮길 때, 가장 애 먹는 부분중의 하나. CreateProcess 함수로 다 바꿔주어야 한다.
 
 
= 관련 문서 =
* [[포팅]] ([[porting]])
 
[[Category:컴퓨터 공학]]
100

edits

Navigation menu