{"id":199854,"date":"2020-11-10T08:01:09","date_gmt":"2020-11-10T00:01:09","guid":{"rendered":"http:\/\/4563.org\/?p=199854"},"modified":"2020-11-10T08:01:09","modified_gmt":"2020-11-10T00:01:09","slug":"linux-c-%e8%af%ad%e8%a8%80%e7%9a%84-unistd-h-%e4%b8%ad%e7%9a%84-sync%e5%92%8c-linux-%e5%91%bd%e4%bb%a4%e8%a1%8c%e4%b8%ad-sync-%e5%8a%9f%e6%95%88%e4%b8%80%e6%a0%b7%e5%90%97%ef%bc%9f","status":"publish","type":"post","link":"http:\/\/4563.org\/?p=199854","title":{"rendered":"Linux C \u8bed\u8a00\u7684 unistd.h \u4e2d\u7684 sync()\u548c Linux \u547d\u4ee4\u884c\u4e2d sync \u529f\u6548\u4e00\u6837\u5417\uff1f"},"content":{"rendered":"<div>\n<div>\n<div>\n<h1>                  Linux C \u8bed\u8a00\u7684 unistd.h \u4e2d\u7684 sync()\u548c Linux \u547d\u4ee4\u884c\u4e2d sync \u529f\u6548\u4e00\u6837\u5417\uff1f               <\/h1>\n<p> <\/p>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : ReputationZh <\/span>  <span><i><\/i> 3<\/span> <\/div>\n<div> <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div isfirst=\"1\">                        \u5e94\u8be5\u662f\u5dee\u4e0d\u591a\u7684\uff0c\u6211\u624d sync \u547d\u4ee4\u6267\u884c\u65f6\u5c31\u662f\u8c03 sync()\u7cfb\u7edf\u8c03\u7528\u3002\u4f60\u53ef\u4ee5\u6267\u884c\u4ee5\u4e0b strace sync \u8ddf\u8e2a\u4e00\u4e0b\u7cfb\u7edf\u8c03\u7528\uff0c\u5c31\u77e5\u9053 sync \u547d\u4ee4\u5230\u5e95\u5e72\u4e86\u4ec0\u4e48\u4e86\uff1a<\/p>\n<p>[email&#160;protected]:~$ strace sync<br \/>execve(&#8220;\/usr\/bin\/sync&#8221;, [&#8220;sync&#8221;], 0x7ffe44037610 \/* 30 vars *\/) = 0<br \/>brk(NULL) = 0x55d3c942f000<br \/>arch_prctl(0x3001 \/* ARCH_??? *\/, 0x7fff9667d0b0) = -1 EINVAL (Invalid argument)<br \/>access(&#8220;\/etc\/ld.so.preload&#8221;, R_OK) = -1 ENOENT (No such file or directory)<br \/>openat(AT_FDCWD, &#8220;\/etc\/ld.so.cache&#8221;, O_RDONLY|O_CLOEXEC) = 3<br \/>fstat(3, {st_mode=S_IFREG|0644, st_size=26487, &#8230;}) = 0<br \/>mmap(NULL, 26487, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7ff948082000<br \/>close(3) = 0<br \/>openat(AT_FDCWD, &#8220;\/lib\/x86_64-linux-gnu\/libc.so.6&#8221;, O_RDONLY|O_CLOEXEC) = 3<br \/>read(3, &#8220;177ELF2113\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00003\u0000&gt;\u00001\u0000\u0000\u0000360q2\u0000\u0000\u0000\u0000\u0000&#8221;&#8230;, 832) = 832<br \/>pread64(3, &#8220;6\u0000\u0000\u00004\u0000\u0000[email&#160;protected]\u0000\u0000\u0000\u0000\u0000\u0000[email&#160;protected]\u0000\u0000\u0000\u0000\u0000\u0000[email&#160;protected]\u0000\u0000\u0000\u0000\u0000\u0000\u0000&#8221;&#8230;, 784, 64) = 784<br \/>pread64(3, &#8220;4\u0000\u0000\u000020\u0000\u0000\u00005\u0000\u0000\u0000GNU\u00002\u0000\u00003004\u0000\u0000\u00003\u0000\u0000\u0000\u0000\u0000\u0000\u0000&#8221;, 32, 848) = 32<br \/>pread64(3, &#8220;4\u0000\u0000\u000024\u0000\u0000\u00003\u0000\u0000\u0000GNU\u0000cBR3403053702609W242345)q235A1&#8243;&#8230;, 68, 880) = 68<br \/>fstat(3, {st_mode=S_IFREG|0755, st_size=2029224, &#8230;}) = 0<br \/>mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ff948080000<br \/>pread64(3, &#8220;6\u0000\u0000\u00004\u0000\u0000[email&#160;protected]\u0000\u0000\u0000\u0000\u0000\u0000[email&#160;protected]\u0000\u0000\u0000\u0000\u0000\u0000[email&#160;protected]\u0000\u0000\u0000\u0000\u0000\u0000\u0000&#8221;&#8230;, 784, 64) = 784<br \/>pread64(3, &#8220;4\u0000\u0000\u000020\u0000\u0000\u00005\u0000\u0000\u0000GNU\u00002\u0000\u00003004\u0000\u0000\u00003\u0000\u0000\u0000\u0000\u0000\u0000\u0000&#8221;, 32, 848) = 32<br \/>pread64(3, &#8220;4\u0000\u0000\u000024\u0000\u0000\u00003\u0000\u0000\u0000GNU\u0000cBR3403053702609W242345)q235A1&#8243;&#8230;, 68, 880) = 68<br \/>mmap(NULL, 2036952, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7ff947e8e000<br \/>mprotect(0x7ff947eb3000, 1847296, PROT_NONE) = 0<br \/>mmap(0x7ff947eb3000, 1540096, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x25000) = 0x7ff947eb3000<br \/>mmap(0x7ff94802b000, 303104, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x19d000) = 0x7ff94802b000<br \/>mmap(0x7ff948076000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1e7000) = 0x7ff948076000<br \/>mmap(0x7ff94807c000, 13528, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7ff94807c000<br \/>close(3) = 0<br \/>arch_prctl(ARCH_SET_FS, 0x7ff948081580) = 0<br \/>mprotect(0x7ff948076000, 12288, PROT_READ) = 0<br \/>mprotect(0x55d3c7e1e000, 4096, PROT_READ) = 0<br \/>mprotect(0x7ff9480b6000, 4096, PROT_READ) = 0<br \/>munmap(0x7ff948082000, 26487) = 0<br \/>brk(NULL) = 0x55d3c942f000<br \/>brk(0x55d3c9450000) = 0x55d3c9450000<br \/>openat(AT_FDCWD, &#8220;\/usr\/lib\/locale\/locale-archive&#8221;, O_RDONLY|O_CLOEXEC) = 3<br \/>fstat(3, {st_mode=S_IFREG|0644, st_size=3035952, &#8230;}) = 0<br \/>mmap(NULL, 3035952, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7ff947ba8000<br \/>close(3) = 0<br \/>sync() = 0<br \/>close(1) = 0<br \/>close(2) = 0<br \/>exit_group(0) = ?<\/p>\n<p>\u6211\u5728\u6211\u7684\u865a\u62df\u673a\u4e0a\u8dd1\u4e86\u4e00\u4e0b\uff0c\u53d1\u73b0 sync \u547d\u4ee4\u786e\u5b9e\u662f\u8c03\u7528 sync()\u7cfb\u7edf\u8c03\u7528\u6765\u5b9e\u73b0\u7684\uff0c\u89c1\u5012\u6570\u7b2c\u56db\u884c\u3002      <\/p><\/div>\n<div> <b>\u5927\u4f6c\u6709\u8a71\u8aaa<\/b> (<span>2<\/span>)        <\/div>\n<div> <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<ul>\n<li data-pid=\"4268861\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : fasionchan <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             Read The F**king Source Code :)!<\/p>\n<p>https:\/\/github.com\/coreutils\/coreutils\/blob\/master\/src\/sync.c#L231<br \/>https:\/\/github.com\/coreutils\/coreutils\/blob\/master\/src\/sync.c#L25<br \/>https:\/\/github.com\/coreutils\/coreutils\/blob\/master\/src\/system.h#L34                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li data-pid=\"4268862\" data-uid=\"2\">\n<div>\n<div>\n<div> <span>\u8cc7\u6df1\u5927\u4f6c : barathrum <\/span>  <\/div>\n<div> <i title=\"\u5f15\u7528\"><\/i>  <span>          <\/span> <\/div>\n<\/p><\/div>\n<div>                                                             \u4f60\u62ff strace \u770b\u5230\u7684\u662f syscall<br \/>unistd.h \u53ea\u662f libc \u800c\u5df2                                                            <\/div>\n<\/p><\/div>\n<\/li>\n<li>\n","protected":false},"excerpt":{"rendered":"<p>Linux C \u8bed\u8a00\u7684 unist&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[],"tags":[],"_links":{"self":[{"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/posts\/199854"}],"collection":[{"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=199854"}],"version-history":[{"count":0,"href":"http:\/\/4563.org\/index.php?rest_route=\/wp\/v2\/posts\/199854\/revisions"}],"wp:attachment":[{"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=199854"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=199854"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/4563.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=199854"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}