Round 4 / packing (99.8%) / shipping (99.7%)
- vivalarevolución
- formerly prdlm2009
- Location: USA
- Main keyboard: IBM Beam spring
- Main mouse: Kangaroo
- Favorite switch: beam spring
- DT Pro Member: 0097
7bit wrote:Please read this for better understanding of the waiting procedure:Code: Select all
WAIT(P) POSIX Programmer's Manual WAIT(P) NAME wait - await process completion SYNOPSIS wait [pid...] DESCRIPTION When an asynchronous list (see Asynchronous Lists ) is started by the shell, the process ID of the last command in each element of the asyn‐ chronous list shall become known in the current shell execution envi‐ ronment; see Shell Execution Environment . If the wait utility is invoked with no operands, it shall wait until all process IDs known to the invoking shell have terminated and exit with a zero exit status. If one or more pid operands are specified that represent known process IDs, the wait utility shall wait until all of them have terminated. If one or more pid operands are specified that represent unknown process IDs, wait shall treat them as if they were known process IDs that exited with exit status 127. The exit status returned by the wait util‐ ity shall be the exit status of the process requested by the last pid operand. The known process IDs are applicable only for invocations of wait in the current shell execution environment. OPTIONS None. OPERANDS The following operand shall be supported: pid One of the following: 1. The unsigned decimal integer process ID of a command, for which the utility is to wait for the termination. 2. A job control job ID (see the Base Definitions volume of IEEE Std 1003.1-2001, Section 3.203, Job Control Job ID) that identifies a background process group to be waited for. The job control job ID notation is applicable only for invo‐ cations of wait in the current shell execution environment; see Shell Execution Environment . The exit status of wait shall be determined by the last command in the pipeline. Note: The job control job ID type of pid is only available on systems supporting the User Portability Utilities option. STDIN Not used. INPUT FILES None. ENVIRONMENT VARIABLES The following environment variables shall affect the execution of wait: LANG Provide a default value for the internationalization variables that are unset or null. (See the Base Definitions volume of IEEE Std 1003.1-2001, Section 8.2, Internationalization Vari‐ ables for the precedence of internationalization variables used to determine the values of locale categories.) LC_ALL If set to a non-empty string value, override the values of all the other internationalization variables. LC_CTYPE Determine the locale for the interpretation of sequences of bytes of text data as characters (for example, single-byte as opposed to multi-byte characters in arguments). LC_MESSAGES Determine the locale that should be used to affect the format and contents of diagnostic messages written to standard error. NLSPATH Determine the location of message catalogs for the processing of LC_MESSAGES . ASYNCHRONOUS EVENTS Default. STDOUT Not used. STDERR The standard error shall be used only for diagnostic messages. OUTPUT FILES None. EXTENDED DESCRIPTION None. EXIT STATUS If one or more operands were specified, all of them have terminated or were not known by the invoking shell, and the status of the last oper‐ and specified is known, then the exit status of wait shall be the exit status information of the command indicated by the last operand speci‐ fied. If the process terminated abnormally due to the receipt of a sig‐ nal, the exit status shall be greater than 128 and shall be distinct from the exit status generated by other signals, but the exact value is unspecified. (See the kill -l option.) Otherwise, the wait utility shall exit with one of the following values: 0 The wait utility was invoked with no operands and all process IDs known by the invoking shell have terminated. 1-126 The wait utility detected an error. 127 The command identified by the last pid operand specified is unknown. CONSEQUENCES OF ERRORS Default. The following sections are informative. APPLICATION USAGE On most implementations, wait is a shell built-in. If it is called in a subshell or separate utility execution environment, such as one of the following: (wait) nohup wait ... find . -exec wait ... \; it returns immediately because there are no known process IDs to wait for in those environments. Historical implementations of interactive shells have discarded the exit status of terminated background processes before each shell prompt. Therefore, the status of background processes was usually lost unless it terminated while wait was waiting for it. This could be a serious problem when a job that was expected to run for a long time actually terminated quickly with a syntax or initialization error because the exit status returned was usually zero if the requested process ID was not found. This volume of IEEE Std 1003.1-2001 requires the implementation to keep the status of terminated jobs available until the status is requested, so that scripts like: j1& p1=$! j2& wait $p1 echo Job 1 exited with status $? wait $! echo Job 2 exited with status $? work without losing status on any of the jobs. The shell is allowed to discard the status of any process if it determines that the application cannot get the process ID for that process from the shell. It is also required to remember only {CHILD_MAX} number of processes in this way. Since the only way to get the process ID from the shell is by using the '!' shell parameter, the shell is allowed to discard the status of an asynchronous list if "$!" was not referenced before another asynchro‐ nous list was started. (This means that the shell only has to keep the status of the last asynchronous list started if the application did not reference "$!" . If the implementation of the shell is smart enough to determine that a reference to "$!" was not saved anywhere that the application can retrieve it later, it can use this information to trim the list of saved information. Note also that a successful call to wait with no operands discards the exit status of all asynchronous lists.) If the exit status of wait is greater than 128, there is no way for the application to know if the waited-for process exited with that value or was killed by a signal. Since most utilities exit with small values, there is seldom any ambiguity. Even in the ambiguous cases, most appli‐ cations just need to know that the asynchronous job failed; it does not matter whether it detected an error and failed or was killed and did not complete its job normally. EXAMPLES Although the exact value used when a process is terminated by a signal is unspecified, if it is known that a signal terminated a process, a script can still reliably determine which signal by using kill as shown by the following script: sleep 1000& pid=$! kill -kill $pid wait $pid echo $pid was terminated by a SIG$(kill -l $?) signal. If the following sequence of commands is run in less than 31 seconds: sleep 257 | sleep 31 & jobs -l %% either of the following commands returns the exit status of the second sleep in the pipeline: wait <pid of sleep 31>wait %% RATIONALE The description of wait does not refer to the waitpid() function from the System Interfaces volume of IEEE Std 1003.1-2001 because that would needlessly overspecify this interface. However, the wording means that wait is required to wait for an explicit process when it is given an argument so that the status information of other processes is not con‐ sumed. Historical implementations use the wait() function defined in the System Interfaces volume of IEEE Std 1003.1-2001 until wait() returns the requested process ID or finds that the requested process does not exist. Because this means that a shell script could not reli‐ ably get the status of all background children if a second background job was ever started before the first job finished, it is recommended that the wait utility use a method such as the functionality provided by the waitpid() function. The ability to wait for multiple pid operands was adopted from the KornShell. This new functionality was added because it is needed to determine the exit status of any asynchronous list accurately. The only compatibility problem that this change creates is for a script like while sleep 60 do job& echo Job started $(date) as $! done which causes the shell to monitor all of the jobs started until the script terminates or runs out of memory. This would not be a problem if the loop did not reference "$!" or if the script would occasionally wait for jobs it started. FUTURE DIRECTIONS None. SEE ALSO Shell Command Language , kill() , sh , the System Interfaces volume of IEEE Std 1003.1-2001, wait(), waitpid() COPYRIGHT Portions of this text are reprinted and reproduced in electronic form from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 6, Copyright (C) 2001-2003 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group. In the event of any discrepancy between this version and the original IEEE and The Open Group Standard, the original IEEE and The Open Group Standard is the referee document. The original Standard can be obtained online at http://www.opengroup.org/unix/online.html . IEEE/The Open Group 2003 WAIT(P)
If I was a programmer, this would be a lot funnier to me.
-
- Main keyboard: noppoo choc mini brown MX
- Main mouse: N/A
- Favorite switch: red? Have not tried them all.
- DT Pro Member: -
@prdlm2009
Yes, yes it would. And that fact that that it is a shell call or program, instead of a piece of code, would make you laugh even harder.
At the least you can sing with me the waiting song. It would at at least calm every body's nerves¹.
¹
Yes, yes it would. And that fact that that it is a shell call or program, instead of a piece of code, would make you laugh even harder.
At the least you can sing with me the waiting song. It would at at least calm every body's nerves¹.
¹
Spoiler:
- aggiejy
- Location: US
- Main keyboard: Filco tenkeyless with browns
- Main mouse: Logitech Performance MX
- Favorite switch: Blues/Browns depending on the day
- DT Pro Member: -
It's be super nice if the first post always had the latest updates in it. Checking once a month or so, it's hard to figure out where we are.
-
- Main keyboard: noppoo choc mini brown MX
- Main mouse: N/A
- Favorite switch: red? Have not tried them all.
- DT Pro Member: -
@aggiejy
I concur.
Also, 7bit, what was with that email:
.
@et al.:
While you wait, please watch, enjoy the lulz:
[youtube]http://www.youtube.com/watch?v=hFzz6EZmkq8[/youtube]
I concur.
Also, 7bit, what was with that email:
Code: Select all
Dear bebuxe,
all NW-switches (PCB-mount) are sold out, so I have to order more.
If you want PCB-mount switches, please send your order to
CherryMX at Deskthority as soon as possible.
In a few days, some switches might be sold out again!
Thanks!
7bit.
Order-ID |Ordered| Stock|Price|Product code
MXBLACK | 324|sold out| 0.8|MX1A-11NN
MXDARKGREY | 263| 237| 0.8|MX1A-21NN
MXLOCK | 56| 24| 3.6|MX1A-31NW
MXWHITE | 760|in stock| 0.6|MX1A-A1NN
MXCLEAR | 2543|in stock| 0.6|MX1A-C1NN
MXGREY | 922| 248| 0.8|MX1A-D1NN (12/2012)
MXBLUE | 698|in stock| 0.6|MX1A-E1NN
MXGREEN | 2366|preorder| 0.6|MX1A-F1NN
MXBROWN | 444|in stock| 0.6|MX1A-G1NN
MXRED | 990|in stock| 0.6|MX1A-L1NN
MXBLACK/NW | 0|preorder| 0.8|MX1A-11NW (12/2012)
MXDARKGREY/NW| 295|preorder| 0.8|MX1A-21NW (12/2012)
MXLOCK/NW | 150| 90| 3.6|MX1A-31NW
MXWHITE/NW | 212|preorder| 0.8|MX1A-A1NW
MXCLEAR/NW | 0|preorder| 0.8|MX1A-C1NW
MXGREY/NW | 422|preorder| 0.8|MX1A-D1NW (12/2012)
MXBLUE/NW | 0|preorder| 0.8|MX1A-E1NW (12/2012)
MXGREEN/NW | 638|preorder| 0.8|MX1A-F1NW (12/2012)
MXBROWN/NW | 4|preorder| 0.8|MX1A-G1NW (12/2012)
MXRED/NW | 140|preorder| 0.8|MX1A-L1NW (12/2012)
CHERRYBOX | 3| 3| 7|Cherry box for 800 switches
CHERRYBOX2 | 0| 4| 12|Cherry box for 800 switches (2x)
CHERRYBOX3 | 0| 3| 16|Cherry box for 800 switches (3x)
CHERRYBOX4 | 0| 2| 20|Cherry box for 800 switches (4x)
CHERRYBOX5 | 0| 2| 24|Cherry box for 800 switches (5x)
@et al.:
While you wait, please watch, enjoy the lulz:
[youtube]http://www.youtube.com/watch?v=hFzz6EZmkq8[/youtube]
- hsu
- Location: Brazil
- Main keyboard: Filco+Leopold TKL Browns
- Main mouse: Logitech MX510
- Favorite switch: Cherry MX Browns
- DT Pro Member: -
Indeed, I even thought the thread had achieved some kind of limit because we're at 100 pages...aggiejy wrote:It's be super nice if the first post always had the latest updates in it. Checking once a month or so, it's hard to figure out where we are.
(Unrelated: any idea which keyboard could go well with the spherical keycaps? I can't really find the combination white+mx blues+tenkeyless anywhere - no filco majestouch for that combination etc)
- blighty
- Location: New York, USA
- Main keyboard: LZ ergo (mx silent red)
- Main mouse: Logitech G Pro
- Favorite switch: Cherry MX Silent Red
- DT Pro Member: 0037
http://geekhack.org/index.php?topic=37487.0hsu wrote:Indeed, I even thought the thread had achieved some kind of limit because we're at 100 pages...aggiejy wrote:It's be super nice if the first post always had the latest updates in it. Checking once a month or so, it's hard to figure out where we are.
(Unrelated: any idea which keyboard could go well with the spherical keycaps? I can't really find the combination white+mx blues+tenkeyless anywhere - no filco majestouch for that combination etc)
jdcarpe on GH is/was selling a white Filco MJ2 with MX blues?
Also for an update, you could always send ";asdjkl gfaweo;ihja" to 7bit_R4, and get the updated list sent to you.
- 7bit
- Location: Berlin, DE
- Main keyboard: Tipro / IBM 3270 emulator
- Main mouse: Logitech granite for SGI
- Favorite switch: MX Lock
- DT Pro Member: 0001
Order-ID..................orders|qty|stock.......price|description
SPH/SPACE/BLUE..............|.69|..1|1.left......|..$3|6.25.units.Filco/Cherry/Leopold
SPH/SPACETIPRO..............|.20|..1|1.left......|..$3|4.units.(SA-family.only!)
SPH/SPACETIPRO/BLUE.........|.12|..1|2.left......|..$3|4.units.(SA-family.only!)
SPH/SPACEUNI................|.37|..1|2.left......|..$4|7.units.(SA-family.only!)
SPH/SPACEUNI/BLUE...........|.17|..1|2.left......|..$4|7.units.(SA-family.only!)
SPH/SPACEUNI/VIOLETT........|..9|..1|in.stock....|..$4|7.units.(SA-family.only!)
SPH/KBDRUNNER...............|103|..1|2.left......|..$1|keyboard.runner.white.on.red
SPH/LOTUSESC................|.32|..1|2.left......|..$2|Lotus.key.(1....unit,..row.3)
SPH/LOTUS125................|.17|..1|in.stock....|..$2|Lotus.key.(1.25.units,.row.3)
ROUND3/MODIFIER150..........|..6|.18|2.left......|.$18|Modifier.kit.(1.5.units.extra.keys)
ROUND3/SPACE/BLACK..........|.64|..1|1.left......|..$2|6.25.units.Filco/Cherry/Leopold
ROUND3/SPACENEW/GREY........|..3|..1|in.stock....|.$12|6.units.(114;38,57)
ROUND3/SPACEOLD/BLACK.......|.19|..1|1.left......|..$2|7.units.Cherry.no.Windows
ROUND3/SPACEOLD/ORANGE......|..8|..1|in.stock....|..$2|7.units.Cherry.no.Windows
ROUND3/FR...................|..3|.30|in.stock....|.$28|French.language.kit
ROUND3/PT...................|..2|.21|2.left......|.$24|Portuguese.language.kit
ROUND3/MUSIC/ORANGE.........|..5|.12|2.left......|.$24|Music.Function.kit
ROUND3/COMMAND125...........|..2|..1|in.stock....|..$2|Command.key.(1.25.unit,.row.4)
ROUND3/PHANTOMESC...........|.14|..1|2.left......|..$2|Phantom.Escape.(1.unit,.row.1)
RETRO/ALPHA/GREY............|..3|.53|1.left......|.$37|A-Z.and.Punctuation.keys
RETRO/MODIFIER150...........|..5|..9|1.left......|.$12|Modifier.kit.(1.5.units)
RETRO/FUNCTION12............|..3|.12|2.left......|.$15|F1-F12.(row.1,.1.unit,.1.color)
RETRO/SPACENEW..............|..5|..1|in.stock....|.$12|6.units.(114;38,57)
RETRO/SPACEOLD/BLUE.........|..6|..1|1.left......|..$6|7.units.Cherry.no.Windows
RETRO/SPACEOLD/RED..........|..4|..1|in.stock....|..$6|7.units.Cherry.no.Windows
RETRO/ES....................|..1|.24|2.left......|.$24|Spanish.language.kit
RETRO/DVORAK................|..2|.25|2.left......|.$32|Dvorak.language.kit
RETRO/GAMERMINI/BLUE........|..3|.32|1.left......|.$22|Gamer.kit.(WASD/Gamer.function.keys)
NOIR/SPACE..................|.98|..1|1.left......|..$2|6.25.units.Filco/Cherry/Leopold
NOIR/SPACENEW...............|..8|..1|in.stock....|.$12|6.units.(114;38,57)
NOIR/SPACEOLD...............|.29|..1|1.left......|..$2|7.units.Cherry.no.Windows
NOIR/FR.....................|..0|.31|in.stock....|.$24|French.language.kit
NOIR/ES.....................|..1|.24|1.left......|.$24|Spanish.language.kit
NOIR/UK.....................|..2|..7|1.left......|.$16|UK.language.kit
NOIR/DVORAK.................|..4|.25|1.left......|.$24|Dvorak.language.kit
NOIR/PHANTOMESC.............|.35|..1|in.stock....|..$2|Phantom.Escape.(1.unit,.row.1)
DUMMY.......................|647|..0|in.stock....|..$1|Dummy.kit/1.share.of.10k.leftover.keys
COLORCHAINPBT...............|..2|200|in.stock....|.$35|Color.Sample.Chain.PBT
COLORCHAINABS...............|..5|200|in.stock....|.$35|Color.Sample.Chain.ABS
BLANKSPH/R3U100C/SPHGREY....|..2|..1|in.stock....|..$3|Blank.1.unit.key.with.center.nub
BLANKSPH/R3U125/SPHGREY.....|..2|..1|in.stock....|..$3|Blank.1.25.units.(row.3./.ASDFGH.row)
BLANKSPH/R3U200P/SPHGREY....|..3|..1|in.stock....|..$4|Blank.2.units.(POS.row.3)
BLANKSPH/R2U150/SPHGREY.....|..4|..1|in.stock....|..$3|Blank.1.5..units.(row.2./.QWERTY.row)
BLANKSPH/R2U150/SPHBLUE.....|..5|..1|2.left......|..$3|Blank.1.5..units.(row.2./.QWERTY.row)
BLANKSPH/R3U125/SPHBLUE.....|..2|..1|in.stock....|..$3|Blank.1.25.units.(row.3./.ASDFGH.row)
BLANKSPH/R3U175/SPHBLUE.....|..2|..1|in.stock....|..$3|Blank.1.75.units.(row.3./.ASDFGH.row)
BLANKSPH/R4U175/SPHBLUE.....|..2|..1|in.stock....|..$3|Blank.1.75.units.(row.4./.ZXCVBN.row)
BLANK/R1U100/BLACK..........|.13|..1|1.left......|$1.2|Blank.1.unit.key.(row.1./.Function.row)
BLANK/R3U175/BLACK..........|..5|..1|2.left......|..$4|Blank.1.75.units.(row.3./.ASDFGH.row)
BLANK/R4U150/BLACK..........|.10|..1|1.left......|..$3|Blank.1.5..units.(row.4./.ZXCVBN.row)
BLANK/R4U200H/BLACK.........|..5|..1|2.left......|..$4|Blank.2.units.horizontal.(row.4)
BLANK/R3U225/VERYDARKGREY...|..1|..1|in.stock....|..$5|Blank.2.25.units.(row.3,.Return)
BLANK/R4U200H/VERYDARKGREY..|..1|..1|in.stock....|..$4|Blank.2.units.horizontal.(row.4)
BLANK/R4U200V/VERYDARKGREY..|..1|..1|in.stock....|..$4|Blank.2.units.vertical.(row.4)
BLANK/R4U275/VERYDARKGREY...|..3|..1|in.stock....|..$5|Blank.2.75.units.(row.4,.Shift.right)
BLANK/BLANKJRET/ORANGE......|..7|..1|1.left......|..$8|Blank.J-shape.Return.(ISO)
BLANK/SPACEOLD/CLEAR........|..4|..1|in.stock....|..$5|7.units.Cherry.no.Windows
BLANK/R3U200V/LIGHTGREY.....|..6|..1|1.left......|..$4|Blank.2.units.vertical.(row.3)
BLANK/R4U225/LIGHTGREY......|..3|..1|in.stock....|..$6|Blank.2.25.units.(row.4,.Shift.left)
BLANK/R4U225/VERYDARKGREY...|..4|..1|in.stock....|..$5|Blank.2.25.units.(row.4,.Shift.left)
BLANK/R4U275/LIGHTGREY......|..5|..1|2.left......|..$6|Blank.2.75.units.(row.4,.Shift.right)
BLANK/R1U125/BLACK..........|..4|..1|in.stock....|..$4|Blank.1.25.units.(row.1./.Function.row)
BLANK/SPACE/WHITE...........|..6|..1|1.left......|..$6|6.25.units.Filco/Cherry/Leopold
BLANK/BLANK100/LIGHTGREY....|..6|.16|1.left......|.$16|Blank.1.unit.keys.4.keys.per.row
BLANK/BLANKJRET/VERYDARKGREY|..4|..1|in.stock....|..$6|Blank.J-shape.Return.(ISO)
BLANK/R4U275/CLEAR..........|..1|..1|in.stock....|..$8|Blank.2.75.units.(row.4,.Shift.right)
BLANK/R1U200H/VERYDARKGREY..|..1|..1|in.stock....|..$5|Blank.2.units.horizontal.(row.1)
BLANK/R3U175/VERYDARKGREY...|..1|..1|in.stock....|..$5|Blank.1.75.unit.key.(row.3./.ASDFGH.row).
BLANK/R1U100/LIGHTGREY......|..1|..1|in.stock....|$1.5|Blank.1.unit.key.(row.1./.QWERTY.row).
BIANCO/LOTUSESC/RED.........|.43|..1|1.left......|..$2|Lotus.key.red.(1.unit,.row.1)
BIANCO/LOTUSESC/GREEN.......|..9|..1|1.left......|..$4|Lotus.key.green.(1.unit,.row.1)
BIANCO/LOTUSESC/BLUE........|..9|..1|1.left......|..$4|Lotus.key.green.(1.unit,.row.1)
BIANCO/LOTUS125/BLACK.......|..5|..1|in.stock....|..$3|Lotus.key.(1.25.units,.row.4)
BIANCO/LOTUS125/RED.........|.33|..1|1.left......|..$2|Lotus.key.(1.25.units,.row.4)
- Acanthophis
- Location: Germany
- DT Pro Member: -
No.fossala wrote:Are all the spherical the same profile?
-
- Location: Washington, United States
- Favorite switch: Blue
- DT Pro Member: -
We can fix that...bebuxe wrote:@prdlm2009
Yes, yes it would. And that fact that that it is a shell call or program, instead of a piece of code, would make you laugh even harder.
At the least you can sing with me the waiting song. It would at at least calm every body's nerves¹.
¹Spoiler:
Code: Select all
WAIT(2) Linux Programmer's Manual WAIT(2)
NAME
wait, waitpid, waitid - wait for process to change state
SYNOPSIS
#include <sys/types.h>
#include <sys/wait.h>
pid_t wait(int *status);
pid_t waitpid(pid_t pid, int *status, int options);
int waitid(idtype_t idtype, id_t id, siginfo_t *infop, int options);
Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
waitid():
_SVID_SOURCE || _XOPEN_SOURCE >= 500 ||
_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* Since glibc 2.12: */ _POSIX_C_SOURCE >= 200809L
DESCRIPTION
All of these system calls are used to wait for state changes in a child
of the calling process, and obtain information about the child whose
state has changed. A state change is considered to be: the child terâ€
minated; the child was stopped by a signal; or the child was resumed by
a signal. In the case of a terminated child, performing a wait allows
the system to release the resources associated with the child; if a
wait is not performed, then the terminated child remains in a "zombie"
state (see NOTES below).
If a child has already changed state, then these calls return immediâ€
ately. Otherwise they block until either a child changes state or a
signal handler interrupts the call (assuming that system calls are not
automatically restarted using the SA_RESTART flag of sigaction(2)). In
the remainder of this page, a child whose state has changed and which
has not yet been waited upon by one of these system calls is termed
waitable.
wait() and waitpid()
The wait() system call suspends execution of the calling process until
one of its children terminates. The call wait(&status) is equivalent
to:
waitpid(-1, &status, 0);
The waitpid() system call suspends execution of the calling process
until a child specified by pid argument has changed state. By default,
waitpid() waits only for terminated children, but this behavior is modâ€
ifiable via the options argument, as described below.
The value of pid can be:
< -1 meaning wait for any child process whose process group ID is
equal to the absolute value of pid.
-1 meaning wait for any child process.
0 meaning wait for any child process whose process group ID is
equal to that of the calling process.
> 0 meaning wait for the child whose process ID is equal to the
value of pid.
The value of options is an OR of zero or more of the following conâ€
stants:
WNOHANG return immediately if no child has exited.
WUNTRACED also return if a child has stopped (but not traced via
ptrace(2)). Status for traced children which have stopped
is provided even if this option is not specified.
WCONTINUED (since Linux 2.6.10)
also return if a stopped child has been resumed by delivery
of SIGCONT.
(For Linux-only options, see below.)
If status is not NULL, wait() and waitpid() store status information in
the int to which it points. This integer can be inspected with the
following macros (which take the integer itself as an argument, not a
pointer to it, as is done in wait() and waitpid()!):
WIFEXITED(status)
returns true if the child terminated normally, that is, by callâ€
ing exit(3) or _exit(2), or by returning from main().
WEXITSTATUS(status)
returns the exit status of the child. This consists of the
least significant 8 bits of the status argument that the child
specified in a call to exit(3) or _exit(2) or as the argument
for a return statement in main(). This macro should only be
employed if WIFEXITED returned true.
WIFSIGNALED(status)
returns true if the child process was terminated by a signal.
WTERMSIG(status)
returns the number of the signal that caused the child process
to terminate. This macro should only be employed if WIFSIGNALED
returned true.
WCOREDUMP(status)
returns true if the child produced a core dump. This macro
should only be employed if WIFSIGNALED returned true. This
macro is not specified in POSIX.1-2001 and is not available on
some UNIX implementations (e.g., AIX, SunOS). Only use this
enclosed in #ifdef WCOREDUMP ... #endif.
WIFSTOPPED(status)
returns true if the child process was stopped by delivery of a
signal; this is only possible if the call was done using WUNâ€
TRACED or when the child is being traced (see ptrace(2)).
WSTOPSIG(status)
returns the number of the signal which caused the child to stop.
This macro should only be employed if WIFSTOPPED returned true.
WIFCONTINUED(status)
(since Linux 2.6.10) returns true if the child process was
resumed by delivery of SIGCONT.
waitid()
The waitid() system call (available since Linux 2.6.9) provides more
precise control over which child state changes to wait for.
The idtype and id arguments select the child(ren) to wait for, as folâ€
lows:
idtype == P_PID
Wait for the child whose process ID matches id.
idtype == P_PGID
Wait for any child whose process group ID matches id.
idtype == P_ALL
Wait for any child; id is ignored.
The child state changes to wait for are specified by ORing one or more
of the following flags in options:
WEXITED Wait for children that have terminated.
WSTOPPED Wait for children that have been stopped by delivery of a
signal.
WCONTINUED Wait for (previously stopped) children that have been
resumed by delivery of SIGCONT.
The following flags may additionally be ORed in options:
WNOHANG As for waitpid().
WNOWAIT Leave the child in a waitable state; a later wait call can
be used to again retrieve the child status information.
Upon successful return, waitid() fills in the following fields of the
siginfo_t structure pointed to by infop:
si_pid The process ID of the child.
si_uid The real user ID of the child. (This field is not set on
most other implementations.)
si_signo Always set to SIGCHLD.
si_status Either the exit status of the child, as given to _exit(2)
(or exit(3)), or the signal that caused the child to termiâ€
nate, stop, or continue. The si_code field can be used to
determine how to interpret this field.
si_code Set to one of: CLD_EXITED (child called _exit(2));
CLD_KILLED (child killed by signal); CLD_DUMPED (child
killed by signal, and dumped core); CLD_STOPPED (child
stopped by signal); CLD_TRAPPED (traced child has trapped);
or CLD_CONTINUED (child continued by SIGCONT).
If WNOHANG was specified in options and there were no children in a
waitable state, then waitid() returns 0 immediately and the state of
the siginfo_t structure pointed to by infop is unspecified. To distinâ€
guish this case from that where a child was in a waitable state, zero
out the si_pid field before the call and check for a nonzero value in
this field after the call returns.
RETURN VALUE
wait(): on success, returns the process ID of the terminated child; on
error, -1 is returned.
waitpid(): on success, returns the process ID of the child whose state
has changed; if WNOHANG was specified and one or more child(ren) speciâ€
fied by pid exist, but have not yet changed state, then 0 is returned.
On error, -1 is returned.
waitid(): returns 0 on success or if WNOHANG was specified and no
child(ren) specified by id has yet changed state; on error, -1 is
returned. Each of these calls sets errno to an appropriate value in
the case of an error.
ERRORS
ECHILD (for wait()) The calling process does not have any unwaited-for
children.
ECHILD (for waitpid() or waitid()) The process specified by pid (waitâ€
pid()) or idtype and id (waitid()) does not exist or is not a
child of the calling process. (This can happen for one's own
child if the action for SIGCHLD is set to SIG_IGN. See also the
Linux Notes section about threads.)
EINTR WNOHANG was not set and an unblocked signal or a SIGCHLD was
caught; see signal(7).
EINVAL The options argument was invalid.
CONFORMING TO
SVr4, 4.3BSD, POSIX.1-2001.
NOTES
A child that terminates, but has not been waited for becomes a "zomâ€
bie". The kernel maintains a minimal set of information about the zomâ€
bie process (PID, termination status, resource usage information) in
order to allow the parent to later perform a wait to obtain information
about the child. As long as a zombie is not removed from the system
via a wait, it will consume a slot in the kernel process table, and if
this table fills, it will not be possible to create further processes.
If a parent process terminates, then its "zombie" children (if any) are
adopted by init(8), which automatically performs a wait to remove the
zombies.
POSIX.1-2001 specifies that if the disposition of SIGCHLD is set to
SIG_IGN or the SA_NOCLDWAIT flag is set for SIGCHLD (see sigaction(2)),
then children that terminate do not become zombies and a call to wait()
or waitpid() will block until all children have terminated, and then
fail with errno set to ECHILD. (The original POSIX standard left the
behavior of setting SIGCHLD to SIG_IGN unspecified. Note that even
though the default disposition of SIGCHLD is "ignore", explicitly setâ€
ting the disposition to SIG_IGN results in different treatment of zomâ€
bie process children.) Linux 2.6 conforms to this specification. Howâ€
ever, Linux 2.4 (and earlier) does not: if a wait() or waitpid() call
is made while SIGCHLD is being ignored, the call behaves just as though
SIGCHLD were not being ignored, that is, the call blocks until the next
child terminates and then returns the process ID and status of that
child.
Linux Notes
In the Linux kernel, a kernel-scheduled thread is not a distinct conâ€
struct from a process. Instead, a thread is simply a process that is
created using the Linux-unique clone(2) system call; other routines
such as the portable pthread_create(3) call are implemented using
clone(2). Before Linux 2.4, a thread was just a special case of a
process, and as a consequence one thread could not wait on the children
of another thread, even when the latter belongs to the same thread
group. However, POSIX prescribes such functionality, and since Linux
2.4 a thread can, and by default will, wait on children of other
threads in the same thread group.
The following Linux-specific options are for use with children created
using clone(2); they cannot be used with waitid():
__WCLONE
Wait for "clone" children only. If omitted then wait for "non-
clone" children only. (A "clone" child is one which delivers no
signal, or a signal other than SIGCHLD to its parent upon termiâ€
nation.) This option is ignored if __WALL is also specified.
__WALL (since Linux 2.4)
Wait for all children, regardless of type ("clone" or "non-
clone").
__WNOTHREAD (since Linux 2.4)
Do not wait for children of other threads in the same thread
group. This was the default before Linux 2.4.
EXAMPLE
The following program demonstrates the use of fork(2) and waitpid().
The program creates a child process. If no command-line argument is
supplied to the program, then the child suspends its execution using
pause(2), to allow the user to send signals to the child. Otherwise,
if a command-line argument is supplied, then the child exits immediâ€
ately, using the integer supplied on the command line as the exit staâ€
tus. The parent process executes a loop that monitors the child using
waitpid(), and uses the W*() macros described above to analyze the wait
status value.
The following shell session demonstrates the use of the program:
$ ./a.out &
Child PID is 32360
[1] 32359
$ kill -STOP 32360
stopped by signal 19
$ kill -CONT 32360
continued
$ kill -TERM 32360
killed by signal 15
[1]+ Done ./a.out
$
Program source
#include <sys/wait.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
int
main(int argc, char *argv[])
{
pid_t cpid, w;
int status;
cpid = fork();
if (cpid == -1) {
perror("fork");
exit(EXIT_FAILURE);
}
if (cpid == 0) { /* Code executed by child */
printf("Child PID is %ld\n", (long) getpid());
if (argc == 1)
pause(); /* Wait for signals */
_exit(atoi(argv[1]));
} else { /* Code executed by parent */
do {
w = waitpid(cpid, &status, WUNTRACED | WCONTINUED);
if (w == -1) {
perror("waitpid");
exit(EXIT_FAILURE);
}
if (WIFEXITED(status)) {
printf("exited, status=%d\n", WEXITSTATUS(status));
} else if (WIFSIGNALED(status)) {
printf("killed by signal %d\n", WTERMSIG(status));
} else if (WIFSTOPPED(status)) {
printf("stopped by signal %d\n", WSTOPSIG(status));
} else if (WIFCONTINUED(status)) {
printf("continued\n");
}
} while (!WIFEXITED(status) && !WIFSIGNALED(status));
exit(EXIT_SUCCESS);
}
}
SEE ALSO
_exit(2), clone(2), fork(2), kill(2), ptrace(2), sigaction(2), sigâ€
nal(2), wait4(2), pthread_create(3), credentials(7), signal(7)
COLOPHON
This page is part of release 3.40 of the Linux man-pages project. A
description of the project, and information about reporting bugs, can
be found at http://www.kernel.org/doc/man-pages/.
Linux 2010-09-26 WAIT(2)
-
- Main keyboard: noppoo choc mini brown MX
- Main mouse: N/A
- Favorite switch: red? Have not tried them all.
- DT Pro Member: -
@nebo
You may not with incorrect permissions.
You may not with incorrect permissions.
Code: Select all
PAM(3) FreeBSD Library Functions Manual PAM(3)
NAME
pam_acct_mgmt, pam_authenticate, pam_chauthtok, pam_close_session,
pam_end, pam_get_data, pam_get_item, pam_get_user, pam_getenv,
pam_getenvlist, pam_open_session, pam_putenv, pam_set_data, pam_set_item,
pam_setcred, pam_start, pam_strerror -- Pluggable Authentication Modules
Library
LIBRARY
Pluggable Authentication Module Library (libpam, -lpam)
SYNOPSIS
#include <security/pam_appl.h>
int
pam_acct_mgmt(pam_handle_t *pamh, int flags);
int
pam_authenticate(pam_handle_t *pamh, int flags);
int
pam_chauthtok(pam_handle_t *pamh, int flags);
int
pam_close_session(pam_handle_t *pamh, int flags);
int
pam_end(pam_handle_t *pamh, int status);
int
pam_get_data(const pam_handle_t *pamh, const char *module_data_name,
const void **data);
int
pam_get_item(const pam_handle_t *pamh, int item_type, const void **item);
int
pam_get_user(pam_handle_t *pamh, const char **user, const char *prompt);
const char *
pam_getenv(pam_handle_t *pamh, const char *name);
char **
pam_getenvlist(pam_handle_t *pamh);
int
pam_open_session(pam_handle_t *pamh, int flags);
int
pam_putenv(pam_handle_t *pamh, const char *namevalue);
int
pam_set_data(pam_handle_t *pamh, const char *module_data_name,
void *data,
void (*cleanup)(pam_handle_t *pamh, void *data, int pam_end_status));
int
pam_set_item(pam_handle_t *pamh, int item_type, const void *item);
int
pam_setcred(pam_handle_t *pamh, int flags);
int
pam_start(const char *service, const char *user,
const struct pam_conv *pam_conv, pam_handle_t **pamh);
const char *
pam_strerror(const pam_handle_t *pamh, int error_number);
DESCRIPTION
The Pluggable Authentication Modules (PAM) library abstracts a number of
common authentication-related operations and provides a framework for
dynamically loaded modules that implement these operations in various
ways.
Terminology
In PAM parlance, the application that uses PAM to authenticate a user is
the server, and is identified for configuration purposes by a service
name, which is often (but not necessarily) the program name.
The user requesting authentication is called the applicant, while the
user (usually, root) charged with verifying his identity and granting him
the requested credentials is called the arbitrator.
The sequence of operations the server goes through to authenticate a user
and perform whatever task he requested is a PAM transaction; the context
within which the server performs the requested task is called a session.
The functionality embodied by PAM is divided into six primitives grouped
into four facilities: authentication, account management, session manage-
ment and password management.
Conversation
The PAM library expects the application to provide a conversation call-
back which it can use to communicate with the user. Some modules may use
specialized conversation functions to communicate with special hardware
such as cryptographic dongles or biometric devices. See pam_conv(3) for
details.
Initialization and Cleanup
The pam_start() function initializes the PAM library and returns a handle
which must be provided in all subsequent function calls. The transaction
state is contained entirely within the structure identified by this han-
dle, so it is possible to conduct multiple transactions in parallel.
The pam_end() function releases all resources associated with the speci-
fied context, and can be called at any time to terminate a PAM transac-
tion.
Storage
The pam_set_item() and pam_get_item() functions set and retrieve a number
of predefined items, including the service name, the names of the
requesting and target users, the conversation function, and prompts.
The pam_set_data() and pam_get_data() functions manage named chunks of
free-form data, generally used by modules to store state from one invoca-
tion to another.
Authentication
There are two authentication primitives: pam_authenticate() and
pam_setcred(). The former authenticates the user, while the latter man-
ages his credentials.
Account Management
The pam_acct_mgmt() function enforces policies such as password expiry,
account expiry, time-of-day restrictions, and so forth.
Session Management
The pam_open_session() and pam_close_session() functions handle session
setup and teardown.
Password Management
The pam_chauthtok() function allows the server to change the user's pass-
word, either at the user's request or because the password has expired.
Miscellaneous
The pam_putenv(), pam_getenv() and pam_getenvlist() functions manage a
private environment list in which modules can set environment variables
they want the server to export during the session.
The pam_strerror() function returns a pointer to a string describing the
specified PAM error code.
RETURN VALUES
The following return codes are defined by <security/pam_constants.h>:
[PAM_ABORT] General failure.
[PAM_ACCT_EXPIRED] User account has expired.
[PAM_AUTHINFO_UNAVAIL]
Authentication information is unavailable.
[PAM_AUTHTOK_DISABLE_AGING]
Authentication token aging disabled.
[PAM_AUTHTOK_ERR] Authentication token failure.
[PAM_AUTHTOK_EXPIRED]
Password has expired.
[PAM_AUTHTOK_LOCK_BUSY]
Authentication token lock busy.
[PAM_AUTHTOK_RECOVERY_ERR]
Failed to recover old authentication token.
[PAM_AUTH_ERR] Authentication error.
[PAM_BUF_ERR] Memory buffer error.
[PAM_CONV_ERR] Conversation failure.
[PAM_CRED_ERR] Failed to set user credentials.
[PAM_CRED_EXPIRED] User credentials have expired.
[PAM_CRED_INSUFFICIENT]
Insufficient credentials.
[PAM_CRED_UNAVAIL] Failed to retrieve user credentials.
[PAM_DOMAIN_UNKNOWN]
Unknown authentication domain.
[PAM_IGNORE] Ignore this module.
[PAM_MAXTRIES] Maximum number of tries exceeded.
[PAM_MODULE_UNKNOWN]
Unknown module type.
[PAM_NEW_AUTHTOK_REQD]
New authentication token required.
[PAM_NO_MODULE_DATA]
Module data not found.
[PAM_OPEN_ERR] Failed to load module.
[PAM_PERM_DENIED] Permission denied.
[PAM_SERVICE_ERR] Error in service module.
[PAM_SESSION_ERR] Session failure.
[PAM_SUCCESS] Success.
[PAM_SYMBOL_ERR] Invalid symbol.
[PAM_SYSTEM_ERR] System error.
[PAM_TRY_AGAIN] Try again.
[PAM_USER_UNKNOWN] Unknown user.
SEE ALSO
openpam(3), pam_acct_mgmt(3), pam_authenticate(3), pam_chauthtok(3),
pam_close_session(3), pam_conv(3), pam_end(3), pam_get_data(3),
pam_getenv(3), pam_getenvlist(3), pam_get_item(3), pam_get_user(3),
pam_open_session(3), pam_putenv(3), pam_setcred(3), pam_set_data(3),
pam_set_item(3), pam_start(3), pam_strerror(3)
STANDARDS
X/Open Single Sign-On Service (XSSO) - Pluggable Authentication Modules,
June 1997.
AUTHORS
The OpenPAM library and this manual page were developed for the FreeBSD
Project by ThinkSec AS and Network Associates Laboratories, the Security
Research Division of Network Associates, Inc. under DARPA/SPAWAR contract
N66001-01-C-8035 (``CBOSS''), as part of the DARPA CHATS research pro-
gram.
FreeBSD 8.3 December 21, 2007 FreeBSD 8.3
Spoiler:
- rindorbrot
- Location: Bavaria, Germany
- Main keyboard: Phantom, GON NerD 2.0 TKL
- Main mouse: Zowie ZA11
- Favorite switch: MX Ergo-Clear, Nixdorf Soft-Touch
- DT Pro Member: 0029
Any update on the production progress?
- 7bit
- Location: Berlin, DE
- Main keyboard: Tipro / IBM 3270 emulator
- Main mouse: Logitech granite for SGI
- Favorite switch: MX Lock
- DT Pro Member: 0001
No.
Order-ID..................orders|qty|stock.......price|description
SPH/SPACETIPRO..............|.20|..1|1.left......|..$3|4.units.(SA-family.only!)
SPH/SPACETIPRO/BLUE.........|.12|..1|2.left......|..$3|4.units.(SA-family.only!)
SPH/SPACEUNI................|.37|..1|2.left......|..$4|7.units.(SA-family.only!)
SPH/SPACEUNI/BLUE...........|.17|..1|2.left......|..$4|7.units.(SA-family.only!)
SPH/SPACEUNI/VIOLETT........|..9|..1|in.stock....|..$4|7.units.(SA-family.only!)
SPH/KBDRUNNER...............|103|..1|2.left......|..$1|keyboard.runner.white.on.red
SPH/LOTUSESC................|.32|..1|2.left......|..$2|Lotus.key.(1....unit,..row.3)
SPH/LOTUS125................|.17|..1|in.stock....|..$2|Lotus.key.(1.25.units,.row.3)
ROUND3/SPACENEW/GREY........|..3|..1|in.stock....|.$12|6.units.(114;38,57)
ROUND3/SPACEOLD/ORANGE......|..9|..1|2.left......|..$2|7.units.Cherry.no.Windows
ROUND3/FR...................|..3|.30|in.stock....|.$28|French.language.kit
ROUND3/PT...................|..3|.21|1.left......|.$24|Portuguese.language.kit
ROUND3/MUSIC/ORANGE.........|..6|.12|1.left......|.$24|Music.Function.kit
ROUND3/COMMAND125...........|..6|..1|1.left......|..$2|Command.key.(1.25.unit,.row.4)
ROUND3/PHANTOMESC...........|.14|..1|2.left......|..$2|Phantom.Escape.(1.unit,.row.1)
RETRO/FUNCTION12............|..4|.12|1.left......|.$15|F1-F12.(row.1,.1.unit,.1.color)
RETRO/SPACENEW..............|..5|..1|in.stock....|.$12|6.units.(114;38,57)
RETRO/SPACEOLD/RED..........|..5|..1|2.left......|..$6|7.units.Cherry.no.Windows
RETRO/ES....................|..2|.24|1.left......|.$24|Spanish.language.kit
RETRO/DVORAK................|..2|.25|2.left......|.$32|Dvorak.language.kit
RETRO/GAMERMINI/BLUE........|..3|.32|1.left......|.$22|Gamer.kit.(WASD/Gamer.function.keys)
NOIR/SPACENEW...............|..8|..1|in.stock....|.$12|6.units.(114;38,57)
NOIR/FR.....................|..0|.31|in.stock....|.$24|French.language.kit
NOIR/UK.....................|..2|..7|1.left......|.$16|UK.language.kit
NOIR/DVORAK.................|..4|.25|1.left......|.$24|Dvorak.language.kit
NOIR/PHANTOMESC.............|.35|..1|in.stock....|..$2|Phantom.Escape.(1.unit,.row.1)
DUMMY.......................|647|..0|in.stock....|..$1|Dummy.kit/1.share.of.10k.leftover.keys
COLORCHAINPBT...............|..2|200|in.stock....|.$35|Color.Sample.Chain.PBT
COLORCHAINABS...............|..5|200|in.stock....|.$35|Color.Sample.Chain.ABS
BLANKSPH/R3U100C/SPHGREY....|..2|..1|in.stock....|..$3|Blank.1.unit.key.with.center.nub
BLANKSPH/R3U125/SPHGREY.....|..2|..1|in.stock....|..$3|Blank.1.25.units.(row.3./.ASDFGH.row)
BLANKSPH/R3U200P/SPHGREY....|..3|..1|in.stock....|..$4|Blank.2.units.(POS.row.3)
BLANKSPH/R2U150/SPHGREY.....|..4|..1|in.stock....|..$3|Blank.1.5..units.(row.2./.QWERTY.row)
BLANKSPH/R2U150/SPHBLUE.....|..5|..1|2.left......|..$3|Blank.1.5..units.(row.2./.QWERTY.row)
BLANKSPH/R3U125/SPHBLUE.....|..2|..1|in.stock....|..$3|Blank.1.25.units.(row.3./.ASDFGH.row)
BLANKSPH/R3U175/SPHBLUE.....|..2|..1|in.stock....|..$3|Blank.1.75.units.(row.3./.ASDFGH.row)
BLANKSPH/R4U175/SPHBLUE.....|..2|..1|in.stock....|..$3|Blank.1.75.units.(row.4./.ZXCVBN.row)
BLANK/R1U100/BLACK..........|.13|..1|1.left......|$1.2|Blank.1.unit.key.(row.1./.Function.row)
BLANK/R3U175/BLACK..........|..5|..1|2.left......|..$4|Blank.1.75.units.(row.3./.ASDFGH.row)
BLANK/R4U150/BLACK..........|.10|..1|1.left......|..$3|Blank.1.5..units.(row.4./.ZXCVBN.row)
BLANK/R4U200H/BLACK.........|..5|..1|2.left......|..$4|Blank.2.units.horizontal.(row.4)
BLANK/R3U225/VERYDARKGREY...|..1|..1|in.stock....|..$5|Blank.2.25.units.(row.3,.Return)
BLANK/R4U200H/VERYDARKGREY..|..1|..1|in.stock....|..$4|Blank.2.units.horizontal.(row.4)
BLANK/R4U200V/VERYDARKGREY..|..1|..1|in.stock....|..$4|Blank.2.units.vertical.(row.4)
BLANK/R4U275/VERYDARKGREY...|..3|..1|in.stock....|..$5|Blank.2.75.units.(row.4,.Shift.right)
BLANK/SPACEOLD/CLEAR........|..4|..1|in.stock....|..$5|7.units.Cherry.no.Windows
BLANK/R3U200V/LIGHTGREY.....|..6|..1|1.left......|..$4|Blank.2.units.vertical.(row.3)
BLANK/R4U225/LIGHTGREY......|..3|..1|in.stock....|..$6|Blank.2.25.units.(row.4,.Shift.left)
BLANK/R4U225/VERYDARKGREY...|..4|..1|in.stock....|..$5|Blank.2.25.units.(row.4,.Shift.left)
BLANK/R4U275/LIGHTGREY......|..5|..1|2.left......|..$6|Blank.2.75.units.(row.4,.Shift.right)
BLANK/R1U125/BLACK..........|..4|..1|in.stock....|..$4|Blank.1.25.units.(row.1./.Function.row)
BLANK/BLANK100/LIGHTGREY....|..6|.16|1.left......|.$16|Blank.1.unit.keys.4.keys.per.row
BLANK/R4U275/CLEAR..........|..1|..1|in.stock....|..$8|Blank.2.75.units.(row.4,.Shift.right)
BLANK/R1U200H/VERYDARKGREY..|..1|..1|in.stock....|..$5|Blank.2.units.horizontal.(row.1)
BLANK/R3U175/VERYDARKGREY...|..1|..1|in.stock....|..$5|Blank.1.75.unit.key.(row.3./.ASDFGH.row).
BLANK/R1U100/LIGHTGREY......|..1|..1|in.stock....|$1.5|Blank.1.unit.key.(row.1./.QWERTY.row).
BIANCO/LOTUSESC/RED.........|.43|..1|1.left......|..$2|Lotus.key.red.(1.unit,.row.1)
BIANCO/LOTUSESC/GREEN.......|..9|..1|1.left......|..$4|Lotus.key.green.(1.unit,.row.1)
BIANCO/LOTUSESC/BLUE........|..9|..1|1.left......|..$4|Lotus.key.green.(1.unit,.row.1)
Order-ID..................orders|qty|stock.......price|description
SPH/SPACETIPRO..............|.20|..1|1.left......|..$3|4.units.(SA-family.only!)
SPH/SPACETIPRO/BLUE.........|.12|..1|2.left......|..$3|4.units.(SA-family.only!)
SPH/SPACEUNI................|.37|..1|2.left......|..$4|7.units.(SA-family.only!)
SPH/SPACEUNI/BLUE...........|.17|..1|2.left......|..$4|7.units.(SA-family.only!)
SPH/SPACEUNI/VIOLETT........|..9|..1|in.stock....|..$4|7.units.(SA-family.only!)
SPH/KBDRUNNER...............|103|..1|2.left......|..$1|keyboard.runner.white.on.red
SPH/LOTUSESC................|.32|..1|2.left......|..$2|Lotus.key.(1....unit,..row.3)
SPH/LOTUS125................|.17|..1|in.stock....|..$2|Lotus.key.(1.25.units,.row.3)
ROUND3/SPACENEW/GREY........|..3|..1|in.stock....|.$12|6.units.(114;38,57)
ROUND3/SPACEOLD/ORANGE......|..9|..1|2.left......|..$2|7.units.Cherry.no.Windows
ROUND3/FR...................|..3|.30|in.stock....|.$28|French.language.kit
ROUND3/PT...................|..3|.21|1.left......|.$24|Portuguese.language.kit
ROUND3/MUSIC/ORANGE.........|..6|.12|1.left......|.$24|Music.Function.kit
ROUND3/COMMAND125...........|..6|..1|1.left......|..$2|Command.key.(1.25.unit,.row.4)
ROUND3/PHANTOMESC...........|.14|..1|2.left......|..$2|Phantom.Escape.(1.unit,.row.1)
RETRO/FUNCTION12............|..4|.12|1.left......|.$15|F1-F12.(row.1,.1.unit,.1.color)
RETRO/SPACENEW..............|..5|..1|in.stock....|.$12|6.units.(114;38,57)
RETRO/SPACEOLD/RED..........|..5|..1|2.left......|..$6|7.units.Cherry.no.Windows
RETRO/ES....................|..2|.24|1.left......|.$24|Spanish.language.kit
RETRO/DVORAK................|..2|.25|2.left......|.$32|Dvorak.language.kit
RETRO/GAMERMINI/BLUE........|..3|.32|1.left......|.$22|Gamer.kit.(WASD/Gamer.function.keys)
NOIR/SPACENEW...............|..8|..1|in.stock....|.$12|6.units.(114;38,57)
NOIR/FR.....................|..0|.31|in.stock....|.$24|French.language.kit
NOIR/UK.....................|..2|..7|1.left......|.$16|UK.language.kit
NOIR/DVORAK.................|..4|.25|1.left......|.$24|Dvorak.language.kit
NOIR/PHANTOMESC.............|.35|..1|in.stock....|..$2|Phantom.Escape.(1.unit,.row.1)
DUMMY.......................|647|..0|in.stock....|..$1|Dummy.kit/1.share.of.10k.leftover.keys
COLORCHAINPBT...............|..2|200|in.stock....|.$35|Color.Sample.Chain.PBT
COLORCHAINABS...............|..5|200|in.stock....|.$35|Color.Sample.Chain.ABS
BLANKSPH/R3U100C/SPHGREY....|..2|..1|in.stock....|..$3|Blank.1.unit.key.with.center.nub
BLANKSPH/R3U125/SPHGREY.....|..2|..1|in.stock....|..$3|Blank.1.25.units.(row.3./.ASDFGH.row)
BLANKSPH/R3U200P/SPHGREY....|..3|..1|in.stock....|..$4|Blank.2.units.(POS.row.3)
BLANKSPH/R2U150/SPHGREY.....|..4|..1|in.stock....|..$3|Blank.1.5..units.(row.2./.QWERTY.row)
BLANKSPH/R2U150/SPHBLUE.....|..5|..1|2.left......|..$3|Blank.1.5..units.(row.2./.QWERTY.row)
BLANKSPH/R3U125/SPHBLUE.....|..2|..1|in.stock....|..$3|Blank.1.25.units.(row.3./.ASDFGH.row)
BLANKSPH/R3U175/SPHBLUE.....|..2|..1|in.stock....|..$3|Blank.1.75.units.(row.3./.ASDFGH.row)
BLANKSPH/R4U175/SPHBLUE.....|..2|..1|in.stock....|..$3|Blank.1.75.units.(row.4./.ZXCVBN.row)
BLANK/R1U100/BLACK..........|.13|..1|1.left......|$1.2|Blank.1.unit.key.(row.1./.Function.row)
BLANK/R3U175/BLACK..........|..5|..1|2.left......|..$4|Blank.1.75.units.(row.3./.ASDFGH.row)
BLANK/R4U150/BLACK..........|.10|..1|1.left......|..$3|Blank.1.5..units.(row.4./.ZXCVBN.row)
BLANK/R4U200H/BLACK.........|..5|..1|2.left......|..$4|Blank.2.units.horizontal.(row.4)
BLANK/R3U225/VERYDARKGREY...|..1|..1|in.stock....|..$5|Blank.2.25.units.(row.3,.Return)
BLANK/R4U200H/VERYDARKGREY..|..1|..1|in.stock....|..$4|Blank.2.units.horizontal.(row.4)
BLANK/R4U200V/VERYDARKGREY..|..1|..1|in.stock....|..$4|Blank.2.units.vertical.(row.4)
BLANK/R4U275/VERYDARKGREY...|..3|..1|in.stock....|..$5|Blank.2.75.units.(row.4,.Shift.right)
BLANK/SPACEOLD/CLEAR........|..4|..1|in.stock....|..$5|7.units.Cherry.no.Windows
BLANK/R3U200V/LIGHTGREY.....|..6|..1|1.left......|..$4|Blank.2.units.vertical.(row.3)
BLANK/R4U225/LIGHTGREY......|..3|..1|in.stock....|..$6|Blank.2.25.units.(row.4,.Shift.left)
BLANK/R4U225/VERYDARKGREY...|..4|..1|in.stock....|..$5|Blank.2.25.units.(row.4,.Shift.left)
BLANK/R4U275/LIGHTGREY......|..5|..1|2.left......|..$6|Blank.2.75.units.(row.4,.Shift.right)
BLANK/R1U125/BLACK..........|..4|..1|in.stock....|..$4|Blank.1.25.units.(row.1./.Function.row)
BLANK/BLANK100/LIGHTGREY....|..6|.16|1.left......|.$16|Blank.1.unit.keys.4.keys.per.row
BLANK/R4U275/CLEAR..........|..1|..1|in.stock....|..$8|Blank.2.75.units.(row.4,.Shift.right)
BLANK/R1U200H/VERYDARKGREY..|..1|..1|in.stock....|..$5|Blank.2.units.horizontal.(row.1)
BLANK/R3U175/VERYDARKGREY...|..1|..1|in.stock....|..$5|Blank.1.75.unit.key.(row.3./.ASDFGH.row).
BLANK/R1U100/LIGHTGREY......|..1|..1|in.stock....|$1.5|Blank.1.unit.key.(row.1./.QWERTY.row).
BIANCO/LOTUSESC/RED.........|.43|..1|1.left......|..$2|Lotus.key.red.(1.unit,.row.1)
BIANCO/LOTUSESC/GREEN.......|..9|..1|1.left......|..$4|Lotus.key.green.(1.unit,.row.1)
BIANCO/LOTUSESC/BLUE........|..9|..1|1.left......|..$4|Lotus.key.green.(1.unit,.row.1)
-
- Location: Pennyslvania, US
- Main keyboard: Filco TKL ANSI
- Main mouse: Razer Deathadder Black Edition
- Favorite switch: Cherry MX Brown or red
- DT Pro Member: -
you should hassle them for one.
- 7bit
- Location: Berlin, DE
- Main keyboard: Tipro / IBM 3270 emulator
- Main mouse: Logitech granite for SGI
- Favorite switch: MX Lock
- DT Pro Member: 0001
[quote="sth"huh i was under the impression that we were getting row 3 of everything for sph.[/quote]
No, except for:
keys larger than 1 units (modifiers etc), function keys and there where special kits with row-3 alnum keys.
BTW: I got a message from SP that they are currently producing the lightgrey RETRO-style keys.
No, except for:
keys larger than 1 units (modifiers etc), function keys and there where special kits with row-3 alnum keys.
BTW: I got a message from SP that they are currently producing the lightgrey RETRO-style keys.
- dirge
- Location: Newcastle Upon Tyne, United Kingdom.
- DT Pro Member: -
They need to take photo's for us, seeing things being made and the progress would be great. Would pad out the small round 4 area on the wiki too7bit wrote: BTW: I got a message from SP that they are currently producing the lightgrey RETRO-style keys.
- 7bit
- Location: Berlin, DE
- Main keyboard: Tipro / IBM 3270 emulator
- Main mouse: Logitech granite for SGI
- Favorite switch: MX Lock
- DT Pro Member: 0001
Order-ID..................orders|qty|stock.......price|description
SPH/SPACETIPRO..............|.20|..1|1.left......|..$3|4.units.(SA-family.only!)
SPH/SPACEUNI................|.37|..1|2.left......|..$4|7.units.(SA-family.only!)
SPH/SPACEUNI/BLUE...........|.17|..1|2.left......|..$4|7.units.(SA-family.only!)
SPH/SPACEUNI/VIOLETT........|..9|..1|in.stock....|..$4|7.units.(SA-family.only!)
SPH/KBDRUNNER...............|104|..1|1.left......|..$1|keyboard.runner.white.on.red<----!!!
SPH/LOTUSESC................|.32|..1|2.left......|..$2|Lotus.key.(1....unit,..row.3)<----!!!
SPH/LOTUS125................|.17|..1|in.stock....|..$2|Lotus.key.(1.25.units,.row.3)<----!!!
ROUND3/SPACENEW/GREY........|..3|..1|in.stock....|.$12|6.units.(114;38,57)
ROUND3/SPACEOLD/ORANGE......|..9|..1|2.left......|..$2|7.units.Cherry.no.Windows
ROUND3/FR...................|..3|.30|in.stock....|.$28|French.language.kit
ROUND3/PT...................|..3|.21|1.left......|.$24|Portuguese.language.kit
ROUND3/MUSIC/ORANGE.........|..6|.12|1.left......|.$24|Music.Function.kit<----!!!
ROUND3/COMMAND125...........|..6|..1|1.left......|..$2|Command.key.(1.25.unit,.row.4)<----!!!
ROUND3/PHANTOMESC...........|.14|..1|2.left......|..$2|Phantom.Escape.(1.unit,.row.1)<----!!!
RETRO/FUNCTION12............|..4|.12|1.left......|.$15|F1-F12.(row.1,.1.unit,.1.color)
RETRO/SPACENEW..............|..5|..1|in.stock....|.$12|6.units.(114;38,57)
RETRO/SPACEOLD/RED..........|..5|..1|2.left......|..$6|7.units.Cherry.no.Windows
RETRO/ES....................|..2|.24|1.left......|.$24|Spanish.language.kit
RETRO/DVORAK................|..2|.25|2.left......|.$32|Dvorak.language.kit
RETRO/GAMERMINI/BLUE........|..3|.32|1.left......|.$22|Gamer.kit.(WASD/Gamer.function.keys)<----!!!
NOIR/SPACENEW...............|..8|..1|in.stock....|.$12|6.units.(114;38,57)
NOIR/FR.....................|..0|.31|in.stock....|.$24|French.language.kit
NOIR/UK.....................|..2|..7|1.left......|.$16|UK.language.kit
NOIR/DVORAK.................|..4|.25|1.left......|.$24|Dvorak.language.kit
NOIR/PHANTOMESC.............|.35|..1|in.stock....|..$2|Phantom.Escape.(1.unit,.row.1)<----!!!
BLANKSPH/R3U100C/SPHGREY....|..2|..1|in.stock....|..$3|Blank.1.unit.key.with.center.nub
BLANKSPH/R3U125/SPHGREY.....|..2|..1|in.stock....|..$3|Blank.1.25.units.(row.3./.ASDFGH.row)
BLANKSPH/R3U200P/SPHGREY....|..3|..1|in.stock....|..$4|Blank.2.units.(POS.row.3)
BLANKSPH/R2U150/SPHGREY.....|..4|..1|in.stock....|..$3|Blank.1.5..units.(row.2./.QWERTY.row)
BLANKSPH/R2U150/SPHBLUE.....|..5|..1|2.left......|..$3|Blank.1.5..units.(row.2./.QWERTY.row)
BLANKSPH/R3U125/SPHBLUE.....|..2|..1|in.stock....|..$3|Blank.1.25.units.(row.3./.ASDFGH.row)
BLANKSPH/R3U175/SPHBLUE.....|..2|..1|in.stock....|..$3|Blank.1.75.units.(row.3./.ASDFGH.row)
BLANKSPH/R4U175/SPHBLUE.....|..2|..1|in.stock....|..$3|Blank.1.75.units.(row.4./.ZXCVBN.row)
BLANK/R1U100/BLACK..........|.13|..1|1.left......|$1.2|Blank.1.unit.key.(row.1./.Function.row)
BLANK/R3U175/BLACK..........|..5|..1|2.left......|..$4|Blank.1.75.units.(row.3./.ASDFGH.row)
BLANK/R4U150/BLACK..........|.10|..1|1.left......|..$3|Blank.1.5..units.(row.4./.ZXCVBN.row)
BLANK/R4U200H/BLACK.........|..5|..1|2.left......|..$4|Blank.2.units.horizontal.(row.4)
BLANK/R3U225/VERYDARKGREY...|..1|..1|in.stock....|..$5|Blank.2.25.units.(row.3,.Return)
BLANK/R4U200H/VERYDARKGREY..|..1|..1|in.stock....|..$4|Blank.2.units.horizontal.(row.4)
BLANK/R4U200V/VERYDARKGREY..|..1|..1|in.stock....|..$4|Blank.2.units.vertical.(row.4)
BLANK/R4U275/VERYDARKGREY...|..3|..1|in.stock....|..$5|Blank.2.75.units.(row.4,.Shift.right)
BLANK/SPACEOLD/CLEAR........|..4|..1|in.stock....|..$5|7.units.Cherry.no.Windows
BLANK/R4U275/CLEAR..........|..1|..1|in.stock....|..$8|Blank.2.75.units.(row.4,.Shift.right)
BLANK/R3U200V/LIGHTGREY.....|..6|..1|1.left......|..$4|Blank.2.units.vertical.(row.3)
BLANK/R4U225/LIGHTGREY......|..3|..1|in.stock....|..$6|Blank.2.25.units.(row.4,.Shift.left)
BLANK/R4U275/LIGHTGREY......|..5|..1|2.left......|..$6|Blank.2.75.units.(row.4,.Shift.right)
BLANK/BLANK100/LIGHTGREY....|..6|.16|1.left......|.$16|Blank.1.unit.keys.4.keys.per.row
BLANK/R1U100/LIGHTGREY......|..1|..1|in.stock....|$1.5|Blank.1.unit.key.(row.1./.QWERTY.row).
BLANK/R4U225/VERYDARKGREY...|..4|..1|in.stock....|..$5|Blank.2.25.units.(row.4,.Shift.left)
BLANK/R1U200H/VERYDARKGREY..|..1|..1|in.stock....|..$5|Blank.2.units.horizontal.(row.1)
BLANK/R3U175/VERYDARKGREY...|..1|..1|in.stock....|..$5|Blank.1.75.unit.key.(row.3./.ASDFGH.row).
BLANK/R1U125/BLACK..........|..4|..1|in.stock....|..$4|Blank.1.25.units.(row.1./.Function.row)
BIANCO/LOTUSESC/RED.........|.43|..1|1.left......|..$2|Lotus.key.red.(1.unit,.row.1)<------!!!
BIANCO/LOTUSESC/GREEN.......|..9|..1|1.left......|..$4|Lotus.key.green.(1.unit,.row.1)<------!!!
BIANCO/LOTUSESC/BLUE........|..9|..1|1.left......|..$4|Lotus.key.green.(1.unit,.row.1)<------!!!
- The_Ed
- Asperger's... SQUIRREL!
- Location: MN - USA
- Main keyboard: G80-3494LYCUS-2
- Main mouse: Razer Imperator
- Favorite switch: Red
- DT Pro Member: -
I was just looking through my old posts and found something that gave me a laugh. An excerpt from my fifth ever post on GH:
Sun, 28 August 2011, 18:24:09
Sun, 28 August 2011, 18:24:09
How right I was!The_Ed wrote: [...] I still can't wait... forever is taking fucking forever... And GB4 is in the next universe after this one implodes... But at least I'll get this before then... hopefully...I guess...
-
- Main keyboard: noppoo choc mini brown MX
- Main mouse: N/A
- Favorite switch: red? Have not tried them all.
- DT Pro Member: -
Good thing we made a quantum leap to the past to get them in production time.7bit wrote:In 20111 we where in the interest check phase, so that does not count!
It seems that SP underestimated the time they need to do the production.
Spoiler:
Last edited by bebuxe on 01 Dec 2012, 03:53, edited 1 time in total.