12-30-2012
You seemed to have a misunderstanding about how pipe works. A pipe has a typical 4k buffer so you can write more than one byte to it. You tried hard to write one byte a time to the pipe (which is not necessary), but in your grab_a_byte function, you used "cat $INPUT" to drain everything which should be just a byte at a time. Either use "read -n 1" as you did in other places or use "dd bs=1 count=1" to grab one byte from the pipe.
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
I posted a question on date intervals about a month back asking about how I could be able to go about a user entering the starting year/month/day and an ending year/month/day and then the script automatically cycling through each day of each month of each year that the user has specified.
I... (7 Replies)
Discussion started by: yongho
7 Replies
2. Shell Programming and Scripting
In my server migration requirement, I need to compare if one file on old server is exactly the same as the corresponding file on the new server.
For diff and comm, the inputs need to be sorted. But I do not want to disturb the content of the file and need to find byte-to-byte match.
Please... (4 Replies)
Discussion started by: krishmaths
4 Replies
3. Shell Programming and Scripting
Hi All
Can anyone please suggest me how to remove the last byte from a falt file .This is from the last line's last BYTE.
Please suggest me something.
Thank's and regards
Vinay (1 Reply)
Discussion started by: vinayrao
1 Replies
4. Shell Programming and Scripting
divide input values into specified number (-100 or -200) according to the key (a1 or a2 ....)
For ex: if we give -100 in the command line it would create 100 number intervals (1-100, 100-200, 200-300) untill it covers the value 300 in a1.
Note: It should work the same even with huge numbers... (3 Replies)
Discussion started by: ruby_sgp
3 Replies
5. Ubuntu
Hi
I am new to expect. Please if any one can help on my issue its really appreciable. here is my issue:
I want expect script for random passwords and random commands generation.
please can anyone help me?
Many Thanks in advance (0 Replies)
Discussion started by: vanid
0 Replies
6. Shell Programming and Scripting
Need to use dd to generate a large file from a sample file of random data. This is because I don't have /dev/urandom.
I create a named pipe then:
dd if=mynamed.fifo do=myfile.fifo bs=1024 count=1024
but when I cat a file to the fifo that's 1024 random bytes:
cat randomfile.txt >... (7 Replies)
Discussion started by: Devyn
7 Replies
7. UNIX for Dummies Questions & Answers
There was an upload recently on generating a pseudo-random file when /dev/random does NOT exist.
This does not need /dev/random, /dev/urandom or $RANDOM either...
(I assume $RANDOM relies on the /dev/random device in some way.)
This code uses hexdump just because I like hexdump for ease of... (2 Replies)
Discussion started by: wisecracker
2 Replies
8. UNIX for Dummies Questions & Answers
Hi all,
I hope you can help me with the following question:
I have multiple tables like this:
Chr Start End Zygosity Gene
chr1 153233510 153233510 het LOR
chr1 153233615 153233615 hom LOR
chr1 153233701 153233701 hom LOR
chr1 ... (5 Replies)
Discussion started by: lsantome
5 Replies
9. UNIX for Dummies Questions & Answers
Hello
I created 3 files by:
dd if=/dev/urandom bs=1024 count=1000000 of=./testfile1
dd if=/dev/urandom bs=1024 count=5000000 of=./testfile2
dd if=/dev/urandom bs=1024 count=10000000 of=./testfile3
Now I want to know how to make a change in a specific byte and/or line of theses files? (2 Replies)
Discussion started by: frhling
2 Replies
10. UNIX for Dummies Questions & Answers
hi all,
I wish to calculate the length between intervals whose are defined by a starting and an end possition. The data looks like this:
1 10
23 30
45 60
70 100...
The desired output should be:
13 # (23-10)
15 # (45-30)
10 # (70-60)...
I donīt know how to operate with different... (2 Replies)
Discussion started by: lsantome
2 Replies
pipe(2) System Calls Manual pipe(2)
Name
pipe - create an interprocess channel
Syntax
include <limits.h> /*Definition of PIPE_MAX*/
pipe(fildes)
int fildes[2];
Arguments
fildes Passing an address as an array of two integers into the system call.
Description
The system call creates an I/O mechanism called a pipe. The file descriptors returned can be used in and operations. Their integer values
will be the two lowest available at the time of the function call. The O_NONBLOCK and FD_CLOEXEC flags will be clear on both file descrip-
tors.
When the pipe is written using the descriptor fildes[1], up to PIPE_MAX bytes of data are buffered before the writing process is suspended.
A read using the descriptor fildes[0] picks up the data.
It is assumed that after the pipe has been set up, two (or more) cooperating processes (created by subsequent calls) pass data through the
pipe with and calls.
The shell has a syntax to set up a linear array of processes connected by pipes.
For further information on how and calls behave with pipes, see the and reference pages.
A signal is generated if a write on a pipe with only one end is attempted.
Restrictions
Should more than 4096 bytes be necessary in any pipe among a loop of processes, deadlock may occur.
The underlying implementation of pipes is no longer socket based, but rather implemented through the file system. Any application that
needs socket functionality from pipes should use the system call.
Return Values
The function value zero is returned if the pipe was created; -1 if an error occurred.
Diagnostics
The call fails if:
[EMFILE] Too many descriptors are active.
[ENFILE] The system file table is full.
[EFAULT] The fildes buffer is in an invalid area of the process's address space.
Environment
Differs from the System V definition in that ENFILE is not a possible error condition.
See Also
sh(1), fork(2), read(2), socketpair(2), write(2)
pipe(2)