Some APIs of the standard C Library are not implemented because of the
constraints or limitations of Symbian OS:
- Open C does not support signals because a Symbian C++ thread cannot be
made to execute a "signal handler" spontaneously.
- Owing to the difference in the Symbian OS model (when compared to UNIX
-like OS), fork( ) and exec( ) functions
are not supported.
- Since fork( ) and exec( ) are not supported, popen(
) is not complete. It will just create a child process and open a
pipe between a parent and a child process either in read or write mode. It
neither copies the address space to a child nor copies all the open descriptors
in the parent process to the child.
- wait( ) and waitpid( ) behave differently
from the standard.
- int dup2(int oldfd, int newfd); The return value of dup2 can
be different from the one the developer expected it to be (newfd). So, the
developer of dup2 should use the return value of dup2 as
the new allocated fd rather than the one passed to dup2 (newfd).
According to the standard, newfd and return values are the same, if dup2 is
successful.
- Some of the APIs of Open C assume that a cleanup stack is created and
there is a top-level TRAP for the current thread. All the threads created
using RThread::Create should create them explicitly.
- In case of Open C, libc will have its own console object maintained and
all threads console I/O will be routed to the console. In case of a hybrid
application, if the application creates one more console, then switching between
these consoles will be a problem. The user may not be aware of this problem.
- In case of an emulator, the developer can configure the window size dynamically.
But the console maintained by Open C libc will remain the same. So, if the
configuration is changed, data displayed on the console may not be aligned
properly.
- Even though some APIs likeopen( ), and fcntl(
) take both, two or three arguments, on Open C these APIs may not
behave according to the standard when only 2 arguments are passed.
- Since Symbian C++ does not support long double, math-related APIs that
use long double might not have the desired precision.
More detailed information about the limitations can be found in the Open
C API Reference documentation.
Give
feedback of this section