<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
</head>
<body>
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
<div id="divtagdefaultwrapper" style="font-size:11pt;color:#000000;font-family:Calibri,Arial,Helvetica,sans-serif;" dir="ltr">
<p>Use prim_file and create separate ports for each process you want to run fileops in parallel.  We have a fileops module that just creates ports and stuff it into the process dictionary to reused, which works out well, since lifecycle of the ports works with
 the lifetime of the process.  This works around the file_server_2 bottleneck.</p>
<p><br>
</p>
<p>These two functions should give you the idea:</p>
<p><br>
</p>
<p>
<table class="highlight tab-size js-file-line-container" data-tab-size="8" style="box-sizing: border-box; border-spacing: 0px; border-collapse: collapse; tab-size: 8; color: rgb(51, 51, 51); font-family: -apple-system, system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 14px; background-color: rgb(255, 255, 255);">
<tbody style="box-sizing: border-box;">
<tr style="box-sizing: border-box;">
<td id="LC187" class="blob-code blob-code-inner js-file-line" style="box-sizing: border-box; padding: 0px 10px; position: relative; line-height: 20px; vertical-align: top; overflow: visible; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px; word-wrap: normal; white-space: pre;">
<span class="pl-en" style="box-sizing: border-box; color: rgb(121, 93, 163);">read_file</span>(<span class="pl-smi" style="box-sizing: border-box;">Name</span>)
<span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">-></span></td>
</tr>
<tr style="box-sizing: border-box;">
<td id="L188" class="blob-num js-line-number" data-line-number="188" style="box-sizing: border-box; padding: 0px 10px; width: 50px; min-width: 50px; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px; line-height: 20px; color: rgba(0, 0, 0, 0.3); text-align: right; white-space: nowrap; vertical-align: top; cursor: pointer; user-select: none; border-style: solid; border-color: rgb(238, 238, 238); border-image: initial; border-width: 0px 1px 0px 0px;">
</td>
<td id="LC188" class="blob-code blob-code-inner js-file-line" style="box-sizing: border-box; padding: 0px 10px; position: relative; line-height: 20px; vertical-align: top; overflow: visible; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px; word-wrap: normal; white-space: pre;">
<span class="pl-smi" style="box-sizing: border-box;">Port</span> <span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">
=</span> <span class="pl-en" style="box-sizing: border-box; color: rgb(121, 93, 163);">
get_port</span>(),</td>
</tr>
<tr style="box-sizing: border-box;">
<td id="L189" class="blob-num js-line-number" data-line-number="189" style="box-sizing: border-box; padding: 0px 10px; width: 50px; min-width: 50px; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px; line-height: 20px; color: rgba(0, 0, 0, 0.3); text-align: right; white-space: nowrap; vertical-align: top; cursor: pointer; user-select: none; border-style: solid; border-color: rgb(238, 238, 238); border-image: initial; border-width: 0px 1px 0px 0px;">
</td>
<td id="LC189" class="blob-code blob-code-inner js-file-line" style="box-sizing: border-box; padding: 0px 10px; position: relative; line-height: 20px; vertical-align: top; overflow: visible; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px; word-wrap: normal; white-space: pre;">
<span class="pl-en" style="box-sizing: border-box; color: rgb(121, 93, 163);">prim_file</span>:<span class="pl-en" style="box-sizing: border-box; color: rgb(121, 93, 163);">read_file</span>(
<span class="pl-smi" style="box-sizing: border-box;">Port</span>, <span class="pl-smi" style="box-sizing: border-box;">
Name</span> ).</td>
</tr>
</tbody>
</table>
<br>
</p>
<p><br>
</p>
<p>
<table class="highlight tab-size js-file-line-container" data-tab-size="8" style="box-sizing: border-box; border-spacing: 0px; border-collapse: collapse; tab-size: 8; color: rgb(51, 51, 51); font-family: -apple-system, system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 14px; background-color: rgb(255, 255, 255);">
<tbody style="box-sizing: border-box;">
<tr style="box-sizing: border-box;">
<td id="LC340" class="blob-code blob-code-inner js-file-line" style="box-sizing: border-box; padding: 0px 10px; position: relative; line-height: 20px; vertical-align: top; overflow: visible; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px; word-wrap: normal; white-space: pre;">
<span class="pl-en" style="box-sizing: border-box; color: rgb(121, 93, 163);">get_port</span>()
<span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">-></span></td>
</tr>
<tr style="box-sizing: border-box;">
<td id="L341" class="blob-num js-line-number" data-line-number="341" style="box-sizing: border-box; padding: 0px 10px; width: 50px; min-width: 50px; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px; line-height: 20px; color: rgba(0, 0, 0, 0.3); text-align: right; white-space: nowrap; vertical-align: top; cursor: pointer; user-select: none; border-style: solid; border-color: rgb(238, 238, 238); border-image: initial; border-width: 0px 1px 0px 0px;">
</td>
<td id="LC341" class="blob-code blob-code-inner js-file-line" style="box-sizing: border-box; padding: 0px 10px; position: relative; line-height: 20px; vertical-align: top; overflow: visible; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px; word-wrap: normal; white-space: pre;">
<span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">case</span>
<span class="pl-en" style="box-sizing: border-box; color: rgb(121, 93, 163);">get</span>(
<span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">?</span><span class="pl-en" style="box-sizing: border-box; color: rgb(121, 93, 163);">MODULE</span> )
<span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">of</span></td>
</tr>
<tr style="box-sizing: border-box;">
<td id="L342" class="blob-num js-line-number" data-line-number="342" style="box-sizing: border-box; padding: 0px 10px; width: 50px; min-width: 50px; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px; line-height: 20px; color: rgba(0, 0, 0, 0.3); text-align: right; white-space: nowrap; vertical-align: top; cursor: pointer; user-select: none; border-style: solid; border-color: rgb(238, 238, 238); border-image: initial; border-width: 0px 1px 0px 0px;">
</td>
<td id="LC342" class="blob-code blob-code-inner js-file-line" style="box-sizing: border-box; padding: 0px 10px; position: relative; line-height: 20px; vertical-align: top; overflow: visible; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px; word-wrap: normal; white-space: pre;">
<span class="pl-c1" style="box-sizing: border-box; color: rgb(0, 134, 179);">undefined</span> -></td>
</tr>
<tr style="box-sizing: border-box;">
<td id="L343" class="blob-num js-line-number" data-line-number="343" style="box-sizing: border-box; padding: 0px 10px; width: 50px; min-width: 50px; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px; line-height: 20px; color: rgba(0, 0, 0, 0.3); text-align: right; white-space: nowrap; vertical-align: top; cursor: pointer; user-select: none; border-style: solid; border-color: rgb(238, 238, 238); border-image: initial; border-width: 0px 1px 0px 0px;">
</td>
<td id="LC343" class="blob-code blob-code-inner js-file-line" style="box-sizing: border-box; padding: 0px 10px; position: relative; line-height: 20px; vertical-align: top; overflow: visible; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px; word-wrap: normal; white-space: pre;">
<span class="pl-smi" style="box-sizing: border-box;">Port</span> <span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">
=</span> <span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">
case</span> <span class="pl-en" style="box-sizing: border-box; color: rgb(121, 93, 163);">
prim_file</span>:<span class="pl-en" style="box-sizing: border-box; color: rgb(121, 93, 163);">start</span>()
<span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">of</span></td>
</tr>
<tr style="box-sizing: border-box;">
<td id="L344" class="blob-num js-line-number" data-line-number="344" style="box-sizing: border-box; padding: 0px 10px; width: 50px; min-width: 50px; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px; line-height: 20px; color: rgba(0, 0, 0, 0.3); text-align: right; white-space: nowrap; vertical-align: top; cursor: pointer; user-select: none; border-style: solid; border-color: rgb(238, 238, 238); border-image: initial; border-width: 0px 1px 0px 0px;">
</td>
<td id="LC344" class="blob-code blob-code-inner js-file-line" style="box-sizing: border-box; padding: 0px 10px; position: relative; line-height: 20px; vertical-align: top; overflow: visible; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px; word-wrap: normal; white-space: pre;">
{<span class="pl-c1" style="box-sizing: border-box; color: rgb(0, 134, 179);">ok</span>,
<span class="pl-smi" style="box-sizing: border-box;">Port0</span>} -> <span class="pl-smi" style="box-sizing: border-box;">
Port0</span>;</td>
</tr>
<tr style="box-sizing: border-box;">
<td id="L345" class="blob-num js-line-number" data-line-number="345" style="box-sizing: border-box; padding: 0px 10px; width: 50px; min-width: 50px; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px; line-height: 20px; color: rgba(0, 0, 0, 0.3); text-align: right; white-space: nowrap; vertical-align: top; cursor: pointer; user-select: none; border-style: solid; border-color: rgb(238, 238, 238); border-image: initial; border-width: 0px 1px 0px 0px;">
</td>
<td id="LC345" class="blob-code blob-code-inner js-file-line" style="box-sizing: border-box; padding: 0px 10px; position: relative; line-height: 20px; vertical-align: top; overflow: visible; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px; word-wrap: normal; white-space: pre;">
{<span class="pl-c1" style="box-sizing: border-box; color: rgb(0, 134, 179);">error</span>,
<span class="pl-smi" style="box-sizing: border-box;">Reason</span>} -></td>
</tr>
<tr style="box-sizing: border-box;">
<td id="L346" class="blob-num js-line-number" data-line-number="346" style="box-sizing: border-box; padding: 0px 10px; width: 50px; min-width: 50px; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px; line-height: 20px; color: rgba(0, 0, 0, 0.3); text-align: right; white-space: nowrap; vertical-align: top; cursor: pointer; user-select: none; border-style: solid; border-color: rgb(238, 238, 238); border-image: initial; border-width: 0px 1px 0px 0px;">
</td>
<td id="LC346" class="blob-code blob-code-inner js-file-line" style="box-sizing: border-box; padding: 0px 10px; position: relative; line-height: 20px; vertical-align: top; overflow: visible; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px; word-wrap: normal; white-space: pre;">
<span class="pl-en" style="box-sizing: border-box; color: rgb(121, 93, 163);">exit</span>( {<span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">?</span><span class="pl-en" style="box-sizing: border-box; color: rgb(121, 93, 163);">MODULE</span>,
<span class="pl-c1" style="box-sizing: border-box; color: rgb(0, 134, 179);">failed_to_create_prim_file</span>,
<span class="pl-smi" style="box-sizing: border-box;">Reason</span>} )</td>
</tr>
<tr style="box-sizing: border-box;">
<td id="L347" class="blob-num js-line-number" data-line-number="347" style="box-sizing: border-box; padding: 0px 10px; width: 50px; min-width: 50px; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px; line-height: 20px; color: rgba(0, 0, 0, 0.3); text-align: right; white-space: nowrap; vertical-align: top; cursor: pointer; user-select: none; border-style: solid; border-color: rgb(238, 238, 238); border-image: initial; border-width: 0px 1px 0px 0px;">
</td>
<td id="LC347" class="blob-code blob-code-inner js-file-line" style="box-sizing: border-box; padding: 0px 10px; position: relative; line-height: 20px; vertical-align: top; overflow: visible; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px; word-wrap: normal; white-space: pre;">
<span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">end</span>,</td>
</tr>
<tr style="box-sizing: border-box;">
<td id="L348" class="blob-num js-line-number" data-line-number="348" style="box-sizing: border-box; padding: 0px 10px; width: 50px; min-width: 50px; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px; line-height: 20px; color: rgba(0, 0, 0, 0.3); text-align: right; white-space: nowrap; vertical-align: top; cursor: pointer; user-select: none; border-style: solid; border-color: rgb(238, 238, 238); border-image: initial; border-width: 0px 1px 0px 0px;">
</td>
<td id="LC348" class="blob-code blob-code-inner js-file-line" style="box-sizing: border-box; padding: 0px 10px; position: relative; line-height: 20px; vertical-align: top; overflow: visible; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px; word-wrap: normal; white-space: pre;">
<span class="pl-en" style="box-sizing: border-box; color: rgb(121, 93, 163);">put</span>(
<span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">?</span><span class="pl-en" style="box-sizing: border-box; color: rgb(121, 93, 163);">MODULE</span>,
<span class="pl-smi" style="box-sizing: border-box;">Port</span> ),</td>
</tr>
<tr style="box-sizing: border-box;">
<td id="L349" class="blob-num js-line-number" data-line-number="349" style="box-sizing: border-box; padding: 0px 10px; width: 50px; min-width: 50px; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px; line-height: 20px; color: rgba(0, 0, 0, 0.3); text-align: right; white-space: nowrap; vertical-align: top; cursor: pointer; user-select: none; border-style: solid; border-color: rgb(238, 238, 238); border-image: initial; border-width: 0px 1px 0px 0px;">
</td>
<td id="LC349" class="blob-code blob-code-inner js-file-line" style="box-sizing: border-box; padding: 0px 10px; position: relative; line-height: 20px; vertical-align: top; overflow: visible; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px; word-wrap: normal; white-space: pre;">
<span class="pl-smi" style="box-sizing: border-box;">Port</span>;</td>
</tr>
<tr style="box-sizing: border-box;">
<td id="L350" class="blob-num js-line-number" data-line-number="350" style="box-sizing: border-box; padding: 0px 10px; width: 50px; min-width: 50px; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px; line-height: 20px; color: rgba(0, 0, 0, 0.3); text-align: right; white-space: nowrap; vertical-align: top; cursor: pointer; user-select: none; border-style: solid; border-color: rgb(238, 238, 238); border-image: initial; border-width: 0px 1px 0px 0px;">
</td>
<td id="LC350" class="blob-code blob-code-inner js-file-line" style="box-sizing: border-box; padding: 0px 10px; position: relative; line-height: 20px; vertical-align: top; overflow: visible; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px; word-wrap: normal; white-space: pre;">
<span class="pl-smi" style="box-sizing: border-box;">Port</span> -> <span class="pl-smi" style="box-sizing: border-box;">
Port</span></td>
</tr>
<tr style="box-sizing: border-box;">
<td id="L351" class="blob-num js-line-number" data-line-number="351" style="box-sizing: border-box; padding: 0px 10px; width: 50px; min-width: 50px; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px; line-height: 20px; color: rgba(0, 0, 0, 0.3); text-align: right; white-space: nowrap; vertical-align: top; cursor: pointer; user-select: none; border-style: solid; border-color: rgb(238, 238, 238); border-image: initial; border-width: 0px 1px 0px 0px;">
</td>
<td id="LC351" class="blob-code blob-code-inner js-file-line" style="box-sizing: border-box; padding: 0px 10px; position: relative; line-height: 20px; vertical-align: top; overflow: visible; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px; word-wrap: normal; white-space: pre;">
<span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">end</span>.</td>
</tr>
</tbody>
</table>
<br>
</p>
<p><br>
</p>
<div id="Signature">
<div id="divtagdefaultwrapper" style="font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); font-family: Calibri, Arial, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols;">
<p>--</p>
<p>paul</p>
<p>Fellow, Engineering</p>
</div>
</div>
</div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> erlang-questions-bounces@erlang.org <erlang-questions-bounces@erlang.org> on behalf of Vladimir Gordeev <gordeev.vladimir.v@gmail.com><br>
<b>Sent:</b> Tuesday, May 30, 2017 1:25:02 PM<br>
<b>To:</b> erlang-questions@erlang.org<br>
<b>Subject:</b> Re: [erlang-questions] Use several file server processes</font>
<div> </div>
</div>
<div>
<div dir="ltr">I had an idea to use slave nodes expecting them so start their own independent file server,<br>
but turns out it relays to master-node file server: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__erlang.org_doc_man_slave.html-23start-2D1&d=DwMFaQ&c=L_h2OePR2UWWefmqrezxOsP9Uqw55rRfX5bRtw9S4KY&r=PevFox_7LK44ZV_jlS5jRM2WItKtsHV4zN_CrbdT2aM&m=KJpSrJr6iRBvp1ZKo2EdQdyYlmOCx67zfD_jtt_gnfk&s=3QVBGCL4ECFXCn4ED-W8ccFXRy-W_vEGgAjL5jToVbo&e=">http://erlang.org/doc/man/slave.html#start-1</a></div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Tue, May 30, 2017 at 7:57 PM, Vladimir Gordeev <span dir="ltr">
<<a href="mailto:gordeev.vladimir.v@gmail.com" target="_blank">gordeev.vladimir.v@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">Greetings,<br>
<br>
I want to start separate erlang shell processes (via shell:start/2) on my erlang node. I want each of these shells to have their own CWD, that could be read/written by file:get_cwd/0, file:set_cwd/1.<br>
<br>
I hoped to find something like that: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__erlang.org_doc_apps_stdlib_io-5Fprotocol.html&d=DwMFaQ&c=L_h2OePR2UWWefmqrezxOsP9Uqw55rRfX5bRtw9S4KY&r=PevFox_7LK44ZV_jlS5jRM2WItKtsHV4zN_CrbdT2aM&m=KJpSrJr6iRBvp1ZKo2EdQdyYlmOCx67zfD_jtt_gnfk&s=AP8cP2E7w6qDIUOUEKFcybBC9s9BXC_bOqm7X5hXSKA&e=" target="_blank">http://erlang.org/doc/<wbr>apps/stdlib/io_protocol.html</a>
 but for file operations.<br>
<br>
I looked up in stdlib file.erl and discovered that it makes gen_server:call to process registered under file_server_2, which is hardcoded in source.<br>
<br>
There is not way to achieve what I want?</div>
</blockquote>
</div>
<br>
</div>
</div>
Confidentiality Notice | This email and any included attachments may be privileged, confidential and/or otherwise protected from disclosure. Access to this email by anyone other than the intended recipient is unauthorized. If you believe you have received this
 email in error, please contact the sender immediately and delete all copies. If you are not the intended recipient, you are notified that disclosing, copying, distributing or taking any action in reliance on the contents of this information is strictly prohibited.
</body>
</html>