Hi, I am writing a server, that accepts a connection from a client, forks, and handles client's requests in the child process. The parent is free to accept more connections.
sub ServerRun
{
my ($server)=@_;
my ($client);
#wait for client connections
while ($client = $server->accept())
{
$client->autoflush(1);
my $pid = fork;
if ($pid == 0)
{
my $clsock=HandleClient($client);
close $clsock;
exit 0;
}
}
}
sub HandleClient
{
# this just recieves system commands
# to be executed and returns output to client
# fn. returns the $client socket
}
The problem is threads are somehow interfiering with each other. For e.g. one client wants 'system ("ll")'.. the output is not sent back until another client has connected and sent it's request. Also: when the 'close $clsock;' statment is executed the client is not dissconnected until another client connects or sends a request in HandleClient function. Any ideas why this is happening? It seems to me a thread is somehow paused, until some other thread does something else. I thought threads should run (virtually) paralell.
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.