On Aug 18, 2013, at 7:21 PM, // ravi <[email protected]> wrote:
> On Aug 18, 2013, at 5:52 PM, Mark Hahn <[email protected]> wrote:
>> When I run this bash script ...
>> 
>>    #!/bin/bash
>>    tail -f  log &
>>    echo "tail is working" >> log
>> 
>> it prints out "tail is working" as expected.  
>> 
>> My question is how can I do the same thing with a node command-line script?  
>> I've tried everything but I can't come up with anything that works. Most of 
>> my tries hang with the child_process never returning.
>> 
>> By node command-line script I mean a file like this ...
>> 
>>    #!/usr/bin/env node
>>    console.log "I'm a command-line script”
>> 
> 
> Are you expecting to see “tail is working” (or the equivalent) on the 
> terminal? I am not entirely comfortable with Node’s child_process (in 
> comparison to Unix fork/popen) but the documentation does say it is the 
> equivalent of popen, so ‘stdout’ is not going to go to the terminal/tty 
> (assuming you are using *nix).
> 
> So, if you have:
> 
> var spawn = require(‘child_process’).spawn,
>    tail  = spawn(‘tail’, [‘-f’, ‘log’]);
> 


To fill that out, this skeletal version works pretty much just as the shell 
script:

  const LOGFILE = './tst.log';

  var fs      = require('fs'),
      spawn   = require('child_process').spawn,
      tail    = spawn('tail', ['-f', LOGFILE]);

  var ctr = 0;
  tail.stdout.on('data', function(data) { console.log(data.toString()); });
  write_forever();


  function write_forever()
  {
      fs.appendFileSync(LOGFILE,  "test line " + ctr++);
      setTimeout(write_forever, 2000);
  }


        —ravi




> Then, ostensibly(*) ‘tail.stdout’ will give you the stuff that is being added.
> 
> I assume you are watching the file like this, using ’tail -f’, for some 
> reason, rather than using some tail module.
> 
>       —ravi
> 
> 
> (*) I am speaking generally here since I do not know exactly how you are 
> spawning the child and how the file content is being modified.
> 
>> 
>> -- 
>> -- 
>> Job Board: http://jobs.nodejs.org/
>> Posting guidelines: 
>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
>> You received this message because you are subscribed to the Google
>> Groups "nodejs" group.
>> To post to this group, send email to [email protected]
>> To unsubscribe from this group, send email to
>> [email protected]
>> For more options, visit this group at
>> http://groups.google.com/group/nodejs?hl=en?hl=en
>> 
>> --- 
>> You received this message because you are subscribed to the Google Groups 
>> "nodejs" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected].
>> For more options, visit https://groups.google.com/groups/opt_out.
> 
> -- 
> -- 
> Job Board: http://jobs.nodejs.org/
> Posting guidelines: 
> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
> You received this message because you are subscribed to the Google
> Groups "nodejs" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://groups.google.com/group/nodejs?hl=en?hl=en
> 
> --- 
> You received this message because you are subscribed to the Google Groups 
> "nodejs" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> For more options, visit https://groups.google.com/groups/opt_out.

-- 
-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to